我已经实现了一个具有swashbuckle/swagger和自定义DelegatingHandler的WebApi项目。 我已经添加了一个SwaggerAccessMessageHandler来检查是否在这种情况下,我不希望我的自定义处理程序运行时发出了一个Swagger请求。WebApi和使用Swagger
我已经注册消息处理程序,
GlobalConfiguration.Configuration.MessageHandlers.Add(new SwaggerAccessMessageHandler());
用的自定义实现:
public class SwaggerAccessMessageHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (IsSwagger(request))
{
var response = request.CreateResponse(HttpStatusCode.Unauthorized);
return Task.FromResult(response);
}
else
{
return base.SendAsync(request, cancellationToken);
}
}
private bool IsSwagger(HttpRequestMessage request)
{
return request.RequestUri.PathAndQuery.StartsWith("/swagger");
}
}
但是,当我可以在我的WebAPI用/招摇,我得到了一个空白页面,而不是招摇的UI。
更新:好的我现在已经删除了Swagger处理程序。 我添加了一个新的AuthenticationHandler,它在传入的请求查询字符串中检查有效的userKey。我现在无法访问招摇。 有没有办法解决这个问题,所以当我想访问大举的我的自定义处理程序不被调用?
请参阅更新以上。 – wakthar