我有一个.NET Web API项目。我可以通过安装Swashbuckle NuGet包来添加Swagger。 Swagger现在提供了一个很好的网页,通过访问此网址提供文档和测试能力:
http://localhost:20475/product-catalog-api/swagger/ui/index
这部分效果很好。但是,当我添加FluentValidation并在WebApiConfig.cs中设置它时,对我网站的所有请求都获得了高位,而不是看到Swagger html页面,我只得到一个空响应的JSON。
我使用Matthew Jones撰写的这篇文章来设置FluentValidation: http://www.exceptionnotfound.net/custom-validation-in-asp-net-web-api-with-fluentvalidation/
这是我的web api配置的样子:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.Filters.Add(new ValidateModelStateFilter());
config.MessageHandlers.Add(new ResponseWrappingHandler());
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: Version + "/{action}",
defaults: new {controller = "Main"}
);
FluentValidationModelValidatorProvider.Configure(config);
}
我可以在每个Web服务方法中手动触发FluentValidation,但我希望像Matthew Jones那样使用Filters和MessageHandler这样的通用解决方案。基本上我想要做的就是说如果请求是swagger-ui那么就不要通过FluentValidation进行路由。
答案 0 :(得分:4)
我最终在Private Sub UserForm_Initialize()
Let list1 = Array()
For j = 0 To 67
list1(j) = Sheet2.Cells(2+j, 1)
Next
Let colors = Array("Blue", "Black", "Gold", "Green")
ComboBox1.List = list1
ListBox1.List = colors
End Sub
内添加了此代码。可能有更优雅的方式,但这对我有用。这会导致swagger页面请求退出FluentValidation挂钩。
ResponseWrappingHandler