c# - Swagger UI 和 ASP.NET - 未找到映射异常 - 无法访问 swagger UI 页面
问题描述
我在 Visual Studio 2017 (.NET Framework 4.6.1) 中创建了一些 ASP.NET Web API 项目。
SwaggerConfig.cs
我使用该文件启用了招摇 UI 。
一切正常,我可以通过http://localhost:54408/swagger/ui/index/
.
我想在应用程序启动时直接访问此 URL(默认地址为:)http://localhost:54408
,因此我将Project Url
项目属性(Web
选项卡)中的值更改为http://localhost:54408/swagger/ui/index/
.
从那一刻起,我无法访问招摇的 UI 页面。我试图回滚我的更改,但没有帮助。
现在,当我尝试进入 swagger 的 UI 页面时,出现以下异常:
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>Mapping not found - index/</ExceptionMessage>
<ExceptionType>Swashbuckle.SwaggerUi.AssetNotFound</ExceptionType>
<StackTrace> at Swashbuckle.SwaggerUi.EmbeddedAssetProvider.GetAsset(String rootUrl, String path) at Swashbuckle.Application.SwaggerUiHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
</StackTrace>
</Error>
我做了一些研究,发现我应该删除.vs
项目文件夹中的一个文件夹。那没起效。关于我还能做什么的任何想法?
此时我知道我应该更改Start URL
项目属性中的选项,但现在我遇到了描述的异常。
解决方案
很晚的回应,但我想我只是想出了这个。
长答案: 问题是由于将应用程序根添加为 swagger URL,正如您所指出的,这会导致在该位置创建一个虚拟目录,这意味着无法加载 swagger 文档。当您加载应用程序时,dotnet 还会创建一个 http 301 重定向,以将任何缺少的“/”字符添加到根目录中 URL 的末尾。此重定向在客户端缓存,因此即使您还原更改并删除 .vs 目录(两者都是必需的),浏览器仍在尝试从 'swagger/ui/index/' 而不是 'swagger/ 加载 swagger用户界面/索引'。您可以通过禁用浏览器开发工具中的缓存 或使用其他浏览器来解决此问题。
简短回答: 修复:
- 恢复应用程序的根路径
- 删除 .vs 目录
- 暂时禁用浏览器缓存(加载成功后可以重新启用)
推荐阅读
- android - 保护 Firebase 实时数据库,授予对 Android 穿戴设备的访问权限
- scala - Scala - 如何使用模式匹配返回 Option[String] 而不是 Any?
- c# - 临时值类型如何装箱
- linux - 如何在 LXSession (LXDE, Lubuntu) 中使用很棒的 WM
- python - Python 3.6 仍然是使用 homebrew 安装并升级到 3.7 后系统报告的 python 版本
- go - golang 频道中的函数调用
- php - 使用PHP的ldap缺少departmentNumber
- selenium - 如何在不使用 python 的情况下使用 selenium、机器人框架将元素中的选定文本添加到 CSV 文件中
- javascript - 循环数据并根据单元格值设置 IndexMatch 公式 - 由于 .getValue() 而太慢
- angular - 角反应形式禁用输入字段