【发布时间】:2020-06-18 21:15:06
【问题描述】:
我在 IIS 的站点内将我的 api 作为应用程序运行。该站点的 url 是“http://api.companyName.local/”,api 的 url 是“http://api.companyName.local/api”。
我已经设置了足够的 Swagger-Net,http://api.companyName.local/api/swagger/docs/v1 返回 swagger.json 并且看起来是正确的。但是,我想不出任何 url 来显示 UI。我试过了:
http://api.companyName.local/api/swagger
http://api.companyName.local/api/swagger/
http://api.companyName.local/api/swagger/ui
http://api.companyName.local/api/swagger/ui/
http://api.companyName.local/api/swagger/ui/index
所有这些都以这个错误结束:
看起来路由正在解析为StaticFile 处理程序,而不是SwaggerUiHandler 处理程序。
这是我正在尝试使用的设置
httpConfiguration.EnableSwagger( c => {
c.SingleApiVersion( "v1", "Company Name API" );
c.ResolveConflictingActions( apiDescriptions => apiDescriptions.First( ) );
c.UseFullTypeNameInSchemaIds( );
} ).EnableSwaggerUi( );
我已经下载了 Swagger-Net 的 github 并开始四处挖掘。我看到它在某些地方使用了httpConfiguration.VirtualPathRoot,所以我认为我应该为我的 api 提及它解析为“/”以防万一。
编辑:
我刚刚发现的一件有趣的事情是我从这两个 url 中得到了不同的错误
http://api.companyName.local/api/swagger/ui/v1
http://api.companyName.local/api/swagger/ui/v2
以 v1 结尾的那个是进入 SwaggerUiHandler 但有 v2 错误的那个就像根本没有 v2 一样。因此,Swagger-Net 中的某些内容似乎正在查看完整的 url,如果它不包含版本,则忽略它。我的 api 没有版本,所以这很烦人。
【问题讨论】:
标签: swagger-net