c# - 我可以在 .Net 5.0 中将请求正文作为字符串获取吗?
问题描述
我们有一个 http 服务器。服务器接收带有 json 正文的 http post 请求。但有时 json 对象无效。在这种情况下,我们希望将 body 读取为字符串。我如何在 .Net 5.0 中实现它。
谢谢。
我的代码:
[HttpPost]
[Route("api")]
public async Task<string> api([FromBody] string requestContent)
{
// When invalid json request receieve, requestContent is null
return requestContent;
}
解决方案
您可以阅读控制器流程之外的正文。但首先,您应该激活请求正文缓冲。在类的Configure
方法上Startup
使用这个中间件之前app.UseEndpoints
。
app.Use(async (context, next) =>
{
context.Request.EnableBuffering();
await next.Invoke();
});
然后你可以从这样的任何动作中读取正文:
Request.Body.Seek(0, SeekOrigin.Begin)
var body = await new StreamReader(Request.Body).ReadToEndAsync();
推荐阅读
- angularjs - $scope 未在脚本 2 中定义
- java - 无法在 Java 验证中读取插值
- excel - 3 列,2 个电子表格,只需要在 Excel 中匹配数据
- symfony - 无法在 Symfony 4 上加载资产
- jmeter - JMeter Setup 的配置是什么
- reactjs - GraphQL + Apollo 请求
- apache-flink - Apache flink: How to forward elements in timeWinow to process function when window closes?
- css - CSS 显示:-webkit-box 在 Internet Explorer 11 中不起作用
- ruby-on-rails - has_many 中的范围可以完全替换默认连接吗?
- php - 将自定义元数据保存到 Woocommerce 订单