ฉันได้ใช้งานโปรเจ็กต์ WebApi ที่มี swashbuckle/swagger และ DelegatingHandler แบบกำหนดเอง ฉันได้เพิ่ม 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");
}
}
แต่เมื่อฉันสามารถ WebApi ด้วย /swagger ฉันจะได้รับหน้าว่างแทนที่จะเป็น ui ที่ผยอง
อัปเดต: ตกลงฉันได้ลบตัวจัดการ Swagger ออกแล้ว ฉันได้เพิ่ม AuthenticationHandler ใหม่ซึ่งจะตรวจสอบ userKey ที่ถูกต้องในสตริงการสืบค้นคำขอที่เข้ามา ฉันไม่สามารถเข้าถึงผยองได้ในขณะนี้ มีวิธีแก้ไขหรือไม่ ดังนั้นเมื่อฉันต้องการเข้าถึงผยอง ตัวจัดการแบบกำหนดเองของฉันจะไม่ถูกเรียก