首页 > 解决方案 > 无法在 asp.net core 2.1 的中间件中写入 HttpContext 的响应正文

问题描述

这是我们中间件的代码片段

public Task InvokeAsync(HttpContext context)
{
    if(!found)
    {
        context.Response.StatusCode = StatusCodes.Status401Unauthorized;
        return context.Response.WriteAsync("Something wrong");
    }
    return _next(context);
}

问题是,虽然客户端应用程序收到错误代码 401,这很好,但在响应的正文中找不到“Something wrong”字符串。我们在这里缺少什么?

标签: c#middlewareasp.net-core-2.1

解决方案


一个对我们有用的有趣解决方案:

以下声明: return context.Response.WriteAsync("Something wrong");

被这个取代:

return context.Response.Body.WriteAsync("Something wrong").AsTask();

此更改使响应正确填充。虽然,我还不确定为什么这种响应体人口的方式会起作用,但不是最初的方法。


推荐阅读