gpt4 book ai didi

c# - 我如何要求 Owin/Katana 将 header 写入输出流?

转载 作者:太空狗 更新时间:2023-10-29 22:15:53 26 4
gpt4 key购买 nike

当我写入响应时,Katana 会跳过发送 Elapsed-Time 响应 header 。在我第一次写入流之前如何让它为我设置标题?

中间件#1

    public override async Task Invoke(IOwinContext context)
{
var stopwatch = new Stopwatch();

stopwatch.Start();
await Next.Invoke(context);
stopwatch.Stop();

context.Response.Headers.Add("Elapsed-Time", new[] {stopwatch.ElapsedMilliseconds.ToString()});
}

中间件#2

    public override async Task Invoke(IOwinContext context)
{
await context.Response.WriteAsync("test");
}

最佳答案

经过一些研究,答案是设置 header 需要在 OnSendingHeaders 中发生。这确保在写入输出流之前设置 header 。例如:

    public override async Task Invoke(IOwinContext context)
{
var stopwatch = new Stopwatch();

context.Response.OnSendingHeaders(x =>
{
stopwatch.Stop();
context.Response.Headers.Add("X-Processing-Time", new[] {stopwatch.ElapsedMilliseconds.ToString()});
}, null);

stopwatch.Start();
await Next.Invoke(context);
stopwatch.Stop();
}

关于c# - 我如何要求 Owin/Katana 将 header 写入输出流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32532058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com