C# 在MVC WebAPI生命周期的什么时候;MS_HttpContext“;准备好了吗?
我们有一个Web API 5.0.0.0应用程序,我们有以下代码: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
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方法?您如何向内部处理程序发送请求?您显示的两行之间有代码吗?上下文和标题?