在使用 Postman 发送 HTTP 请求时,有一种请求类型支持 raw 格式,直接输入要发送到服务端的文本:

服务端如果想要读取这个输入,一个简单的方法是对 Request.Body 这个数据流进行读取。
和之前的博文《ASP.NET Core 将请求的原始 JSON 绑定到字符串》类似,通过创建一个自定义格式化器的方式就可以将这个功能进行封装,实现参数绑定。
using Microsoft.AspNetCore.Mvc.Formatters;
using Microsoft.Net.Http.Headers;
using System.Text;
public class StringInputFormatter : TextInputFormatter
{
public StringInputFormatter()
{
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("text/plain"));
SupportedEncodings.Add(Encoding.UTF8);
SupportedEncodings.Add(Encoding.Unicode);
}
public override async Task<InputFormatterResult> ReadRequestBodyAsync(InputFormatterContext context, Encoding effectiveEncoding)
{
var request = context.HttpContext.Request;
using (var reader = new StreamReader(request.Body, effectiveEncoding))
{
var stringContent = await reader.ReadToEndAsync();
return await InputFormatterResult.SuccessAsync(stringContent);
}
}
}
配置 MvcOptions :
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers(options =>
{
options.InputFormatters.Insert(0, new StringInputFormatter());
});
使用方法如下:
[HttpPost]
public IActionResult Post([FromBody]string html)
{
}










