【问题标题】:Swagger UI and ASP.NET - Mapping not found exception - can't access swagger UI pageSwagger UI 和 ASP.NET - 未找到映射异常 - 无法访问 swagger UI 页面
【发布时间】:2019-06-11 22:48:52
【问题描述】:

我在 Visual Studio 2017 (.NET Framework 4.6.1) 中创建了一些 ASP.NET Web API 项目。

我使用 SwaggerConfig.cs 文件启用了 Swagger UI。

一切正常,我可以通过http://localhost:54408/swagger/ui/index/ 访问用户界面。

我想在应用程序启动时直接访问这个URL(默认地址是:http://localhost:54408),所以我将项目属性(Web选项卡)中的Project Url值更改为http://localhost:54408/swagger/ui/index/

从那一刻起,我无法访问 swagger 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 选项,但现在我遇到了所描述的异常。

【问题讨论】:

  • 你的招摇版本是什么?我认为这不是 .NET Core?配置不同。

标签: c# asp.net visual-studio swagger swagger-ui


【解决方案1】:

回复很晚,但我想我只是想出了这个。

长答案: 问题是由于将应用程序根添加为 swagger URL,正如您所指出的,这会导致在该位置创建一个虚拟目录,这意味着无法加载 swagger 文档。当您加载应用程序时,dotnet 还会创建一个 http 301 重定向,以将任何缺少的“/”字符添加到根目录中 URL 的末尾。此重定向在客户端缓存,因此即使您还原更改并删除 .vs 目录(两者都是必需的),浏览器仍会尝试从 'swagger/ui/index/' 而不是 'swagger/ 加载 swagger用户界面/索引'。您可以通过禁用浏览器开发工具中的缓存来解决此问题 或使用其他浏览器。

简答: 修复:

  1. 恢复应用程序的根路径
  2. 删除 .vs 目录
  3. 暂时禁用浏览器缓存(加载成功后可以重新启用)

【讨论】:

    【解决方案2】:

    我偶然发现了同样的问题。很长一段时间后,我无法找到一个简单的解决方案,而我能想到的解决这个问题的唯一方法实际上就是创建一个新项目并将所有文件复制到该新项目中。删除旧的,将启动项目设置为新的并完成。奇迹般有效。

    【讨论】:

      猜你喜欢
      • 2018-06-08
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 2019-04-12
      • 2021-11-15
      • 2020-07-20
      • 2016-12-09
      相关资源
      最近更新 更多