2013-12-10 64 views
0

我在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?

回答

0

你不能依赖HttpContext的可用性。您需要考虑使用其他方法来执行不在Web API中使用HttpContext的身份验证。如果您使用的是Web API 2.0,则应该查看微软的OwinAuthenticationMiddleware。

相关问题