我在迁移从WCF一个相当广泛的REST服务ASP.NET的WebAPI的过程。 我们使用授权头从客户端发送令牌服务器,我实现了与同401,尽快响应代码DelegateHandler因为它认为没有有效的授权标头。 代码的简化可以在这里看到:
public class AuthenticationHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (request == null) throw new ArgumentNullException("request");
return !IsClientAuthorized(request)
? Task<HttpResponseMessage>.Factory.StartNew(() => new HttpResponseMessage(HttpStatusCode.Unauthorized))
: base.SendAsync(request, cancellationToken);
}
private bool IsClientAuthorized(HttpRequestMessage request)
{
return request != null && !string.IsNullOrEmpty(request.Headers.Authorization.ToString());
}
}
在IIS托管时,它工作正常,但对于集成测试我使用HttpSelfHostServer,这里的授权头不存在对HttpRequestMessage,即使我能看到它的提琴手跟踪发送。
我试图让使用自托管来验证问题是一致的一个非常简单的WebAPI的应用程序,但不幸的是它工作正常那里。 因此,它必须以某种方式与我的代码,但我完全空白是什么原因造成的。
有没有其他人看到这种行为,还是没有任何人有如何追查中的WebAPI栈它出错的建议?