我使用以下指南将 Swashbuckle 安装到我的 web api 应用程序中: http://bitoftech.net/2014/08/25/asp-net-web-api-documentation-using-swagger/
当我在本地 IIS Express/Cassini 安装上运行它并将浏览器指向 http://localhost:59988/swagger/
但是,当通过 IIS8.5 访问应用程序时,它似乎不起作用,例如在 http://my.localhost/swagger/
我被重定向到抛出异常的/swagger/ui/index/
{“消息”:“发生错误。”,“ExceptionMessage”:“未找到映射 - 索引/”,“ExceptionType”:“Swashbuckle.SwaggerUi.AssetNotFound”,“StackTrace”:“在 Swashbuckle.SwaggerUi .EmbeddedAssetProvider.GetAsset(字符串 rootUrl,字符串路径)\r\n 在 Swashbuckle.Application.SwaggerUiHandler.SendAsync(HttpRequestMessage 请求,CancellationToken cancellationToken)”
问题似乎是由于 IIS 重定向我并在 url 末尾附加了一个尾部斜杠(这也是错误消息所说的内容。)
我有
问题:为什么 IIS 将尾部斜杠添加到 url 以及我有哪些选项可以让 swashbuckle 在 IIS 中工作?
最佳答案
有同样的问题:我曾尝试更改几个 IIS 设置,但 Swagger 停止工作,恢复设置也无济于事。
我这样做是为了让它再次工作:
- 以管理员身份使用 NOTEPAD(Notepad++ 或任何其他编辑器在这里不起作用)打开 C:\Windows\System32\inetsrv\config\applicationHost.config。
- 移至
<sites>
和<application>
标记(托管您的 swagger 应用程序的位置)并确认没有任何不妥之处。由于某种原因,我为 Swagger 配置不正确的设置没有在此处恢复。手动清理设置,然后执行 iisreset 解决了该问题。
关于iis - Swagger/Swashbuckle 适用于 IIS Express 但不适用于 IIS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34880396/