HttpContext.Current.Request总是在自定义消息处理空在ASP.NET网页API
问题描述:
我在ASP.NET中创建网络API的自定义消息处理程序像下面HttpContext.Current.Request总是在自定义消息处理空在ASP.NET网页API
public class CustomMessageHandler:DelegatingHandler
{
protected override System.Threading.Tasks.Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
return base.SendAsync(request, cancellationToken).ContinueWith(task =>
{
HttpRequest httpRequest = HttpContext.Current.Request;
AuthenticationMode getAuthenticationMode = Application.GetAuthenticationMode();
var authenticationFactory = new AuthenticationFactory();
ICustomAuthentication authentication = authenticationFactory.CurrentAuthentication(getAuthenticationMode);
authentication.ValidateRequest(httpRequest);
HttpResponseMessage response = task.Result;
response.StatusCode = HttpContext.Current.Response.StatusCode == 200 ? HttpStatusCode.OK : HttpStatusCode.Unauthorized;
return response;
});
}
}
这个方法我试图把里面HttpRequest但它总是null.is我失踪?或者有什么办法将HttpRequestMessage转换为HttpRequest?
答
你不能依赖HttpContext的可用性。您需要考虑使用其他方法来执行不在Web API中使用HttpContext的身份验证。如果您使用的是Web API 2.0,则应该查看微软的OwinAuthenticationMiddleware。