c# - 无法在 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”字符串。我们在这里缺少什么?
解决方案
一个对我们有用的有趣解决方案:
以下声明:
return context.Response.WriteAsync("Something wrong");
被这个取代:
return context.Response.Body.WriteAsync("Something wrong").AsTask();
此更改使响应正确填充。虽然,我还不确定为什么这种响应体人口的方式会起作用,但不是最初的方法。
推荐阅读
- python - 它似乎不保存裁剪的图像
- python - google appengine 未授权状态 401
- c++ - 当返回类型声明为 ListNode 时我们可以返回 false
* - git - GIT Merge:合并在不同分支的同一行上进行不同添加的文件
- java - 小解密程序逻辑建议
- bash - bash while read 循环在第一行之后停止(根据 StackExchange 帖子进行更正后)
- c++ - 如何在 C++ 中获取开始时间和 now() 之间的毫秒差?
- node.js - 我使用的是哪个版本的节点?
- excel - 当工作表受到保护时,不应标记/取消标记复选框
- c# - 以下方法或属性错误之间的调用不明确-c#visual studio 2019