C# 在MVC WebAPI生命周期的什么时候;MS_HttpContext“;准备好了吗?

C# 在MVC WebAPI生命周期的什么时候;MS_HttpContext“;准备好了吗?,c#,asp.net-mvc,asp.net-web-api,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Web Api,Asp.net Mvc 5,我们有一个Web API 5.0.0.0应用程序,我们有以下代码: public class LoggingHandler : DelegatingHandler { protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var cont

我们有一个Web API 5.0.0.0应用程序,我们有以下代码:

public class LoggingHandler : DelegatingHandler
{
    protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,
        CancellationToken cancellationToken)
    {
        var context = request.Properties["MS_HttpContext"] as HttpContextBase;

        // Throws null reference exception in some environments
        var headers = context.Response.Headers;

        ... some more random code ...
    }
}
公共类日志处理程序:DelegatingHandler
{
受保护的异步重写任务SendAsync(HttpRequestMessage请求,
取消令牌(取消令牌)
{
var context=request.Properties[“MS_HttpContext”]作为HttpContextBase;
//在某些环境中引发空引用异常
var headers=context.Response.headers;
…更多的随机码。。。
}
}
这适用于我们的大多数环境,但在一个特定环境中,上下文变量始终为空

在我看来,似乎存在竞争条件,在某些环境中,request.Properties[“MS_HttpContext”]是在调用此处理程序方法之前设置的,而在其他环境中它尚未设置


有谁能解释一下生命周期事件,关于何时设置MS\u HttpContext请求属性,以及何时调用DelegatingHandler的SendAsync方法?

您如何向内部处理程序发送请求?您显示的两行之间有代码吗?上下文和标题?