iis - Swagger/Swashbuckle 适用于 IIS Express 但不适用于 IIS

标签 iis swagger swashbuckle

我使用以下指南将 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 停止工作,恢复设置也无济于事。

我这样做是为了让它再次工作:

  1. 以管理员身份使用 NOTEPAD(Notepad++ 或任何其他编辑器在这里不起作用)打开 C:\Windows\System32\inetsrv\config\applicationHost.config。
  2. 移至 <sites><application>标记(托管您的 swagger 应用程序的位置)并确认没有任何不妥之处。由于某种原因,我为 Swagger 配置不正确的设置没有在此处恢复。手动清理设置,然后执行 iisreset 解决了该问题。

关于iis - Swagger/Swashbuckle 适用于 IIS Express 但不适用于 IIS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34880396/

相关文章:

asp.net - 内部服务器错误 500.24

java - Swagger 生成的 JAX-RS 服务器与 ElasticSearch 依赖关系中断

c# - 在 Swagger UI 中看不到我的 Controller 操作

asp.net - 使用 Swashbuckle 和 ASP.NET Identity 限制对 Swagger 中某些 API Controller 的访问

iis - 了解 IIS 中的路径规范化

iis - ColdFusion/Shibboleth - REMOTE_USER

IIS HTTP 到 HTTPS web.config 重写不返回整个 URL

.net - swagger 不显示以路径参数开头的调用

c# - 使用 swashbuckle 在 swagger 文档中显示来自 [Route] 的名称

c# - 在 asp.net core 3.1 web api 中,分组和版本控制不能很好地协同工作