【发布时间】:2018-05-16 23:42:05
【问题描述】:
我已经实现了一个具有 swashbuckle/swagger 和自定义 DelegatingHandler 的 WebApi 项目。 我添加了一个 SwaggerAccessMessageHandler 来检查是否发出了招摇请求,在这种情况下我不希望我的自定义处理程序运行。
我已将消息处理程序注册为
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");
}
}
但是当我可以使用 /swagger 我的 WebApi 时,我得到一个空白页面而不是 swagger ui。
更新:好的,我现在已经删除了 Swagger 处理程序。 我添加了一个新的 AuthenticationHandler 来检查传入请求查询字符串中的有效用户密钥。我现在无法访问 swagger。 有没有办法解决这个问题,所以当我想访问 swagger 时,我的自定义处理程序不会被调用?
【问题讨论】:
-
请参阅上面的更新。