Mas*_*arz -1 c# memorystream asp.net-core
我有一个测试.Net Core应用程序,我想从管道中读取 http 响应以供我个人实践。
这个最小代码示例提供了 http 响应。我知道它正在破坏响应主体,我需要稍后修复它,但这不是我的问题。MemoryStream()我的问题是即使我没有使用任何数据源初始化它,它内部如何有http响应?
"Startup.cs":
public void Configure(IApplicationBuilder app)
{
app.Use(async (context, next) =>
{
using (var swapStream = new MemoryStream())
{
context.Response.Body = swapStream;
await next.Invoke();
swapStream.Seek(0, SeekOrigin.Begin);
string responseBody = new StreamReader(swapStream).ReadToEnd();
}
});
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,MemoryStream()根本没有使用任何数据源进行初始化。但最后responseBody我可以看到我的http响应。让我更困惑的是,如果我删除,context.Response.Body = swapStream;那么我在responseBody.
如果有人能帮助我理解这段代码是如何工作的,我将不胜感激。
其他东西正在写入流,当您调用时会发生
await next.Invoke();
Run Code Online (Sandbox Code Playgroud)
您正在用内存流替换响应流,并且链中稍后的内容会写入该流。
| 归档时间: |
|
| 查看次数: |
473 次 |
| 最近记录: |