【发布时间】:2016-11-17 06:57:32
【问题描述】:
我发现asp.net核心自定义中间件中的请求只能读取一次,之后我必须手动将请求设置回Request.Body。这是阅读请求的推荐方式吗?
public async Task Invoke(HttpContext context)
{
var request = context.Request;
string xmlstring;
using (System.IO.MemoryStream m = new System.IO.MemoryStream())
{
try
{
if (request.Body.CanSeek == true) request.Body.Position = 0;
request.Body.CopyTo(m);
xmlstring = System.Text.Encoding.UTF8.GetString(m.ToArray());
}
catch (Exception ex)
{
throw ex;
}
}
context.Request.Body = new MemoryStream(Encoding.UTF8.GetBytes(xmlstring));
await _next.Invoke(context);
}
我尝试将流“复制”到另一个流,但没有帮助。我怀疑所有自定义中间件都有设置请求正文的步骤,所以在这里询问我是否以正确的方式进行。
【问题讨论】:
标签: c# asp.net-core