【问题标题】:Swashbuckle custom asset not found未找到 Swashbuckle 自定义资产
【发布时间】:2019-10-08 21:53:13
【问题描述】:

我在 SwaggerConfig.cs 中添加了这个字符串

c.CustomAsset("index", thisAssembly, "Table.Web.CustomContent.index.html");

...然后我运行应用程序,转到 swagger 文档并得到错误:

发生了错误。 未找到嵌入式资源 - Table.Web.CustomContent.index.html Swashbuckle.SwaggerUi.AssetNotFound

index.htmlbuild action 属性设置为 embedded resource

我应该怎么做才能解决它?

【问题讨论】:

  • 我假设 this-> Table.Web.CustomContent.index.html 对应于 index.html 文件的正确路径。我的意思是它应该是命名空间和文件路径的组合
  • @SillyJohn "Table.Web" 在这种情况下是项目名称,"CustomContent" 是我创建的目录
  • 应该是项目的命名空间。请参阅 Github 中的文档 - github.com/domaindrivendev/Swashbuckle#injecting-custom-content
  • @SillyJohn 酷!成功了
  • 很高兴知道..:)

标签: swagger swashbuckle


【解决方案1】:

我今天在一个 ASP.NET C# 项目中为此苦苦挣扎了一段时间,最后通过拼凑一些不同的资源解决了这个问题。

首先(如 Swagger cmets 中所述),必须将项目标记为 嵌入式资源,方法是右键单击解决方案资源管理器中的项目并转到属性,然后从构建操作下拉菜单。

其次,逻辑名称可能难以识别。在我的例子中,目录名称中的破折号在嵌入后被转换为下划线,导致大量拉扯(hair_pulling?)。获取真实逻辑路径的最简单方法是从 Build Output 窗口获取。

  1. 转到工具 => 选项
  2. 展开 Projects and Solutions 侧边栏项,然后单击 Build and Run
  3. 将 MSBuild 输出设置为详细。
  4. 清理解决方案并重建,必要时打开输出窗口。

输出日志应明确说明文件的真实逻辑名称,其中包含类似...的行

Resource file 'swagger-ui\SwaggerUiStyle.css' gets manifest resource name 'MySolutionName.swagger_ui.SwaggerUiStyle.css'

credit@bkwdesign 对这部分的出色解释)

【讨论】:

  • 我遇到了同样的问题。我的项目名称包含一个 -,它变成了一个 _
  • 解决了我的问题,我正在寻找类似 Api.Toto.index.html 但实际上是 Stuf.Api.toto.index.html
猜你喜欢
  • 2022-09-30
  • 2011-06-06
  • 2013-06-30
  • 1970-01-01
  • 2019-11-24
  • 2023-01-12
  • 2014-12-12
  • 1970-01-01
  • 2016-02-22
相关资源
最近更新 更多