我们有一个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 ...
}
}
这适用于我们的大多数环境,但在一个特定环境中, context 变量始终为null。
在我看来,存在竞争条件,并且在某些环境中 request.Properties [“MS_HttpContext”] 在调用此处理程序方法之前被设置,而在其他环境中它是尚未设定。
有人能解释有关何时设置 MS_HttpContext 请求属性与调用DelegatingHandler的 SendAsync 方法时的生命周期事件?