【发布时间】:2022-12-13 08:48:37
【问题描述】:
我的 .NET Core 3.1 应用程序中有一个自定义中间件,并尝试像这样设置响应 StatusCode 和 Body:
public async Task Invoke(HttpContext context)
{
if ( <some condition on context.Request> )
{
context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
await context.Response.WriteAsync("my custom message");
// Bad request, do not call next middleware.
return;
}
// Call next middleware.
await _requestDelegate(context);
}
使用上述代码,StatusCode 已正确设置,但是响应 Body 为空。如何将自定义消息写入正文?
更新1:
添加了await,但这并不能解决问题。感谢@Jonesopolis 提到这一点。
更新 2
所以我在 Swagger 中测试响应(我也在查看开发人员的网络选项卡)。但是,当我在 Postman 中进行测试时,我得到了预期的响应主体。
所以真正的问题是为什么响应主体没有出现在 Swagger/network 选项卡中?
谢谢!
【问题讨论】:
-
尝试在你的
WriteAsync行上输入await -
添加
await后,@Jonesopolis 响应主体仍然为空 :( -
我认为您需要一个流来将您的新内容复制到响应主体。简单地使用 WriteAsync 是行不通的
标签: c# .net-core asp.net-core-middleware