我得到一个404的JavaScript文件,我试图注入我的 Swagger 。以下是我的swagger配置
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "A title for your API");
})
.EnableSwaggerUi(c =>
{
c.InjectJavaScript(thisAssembly,"MyApi.Api.SwaggerExtensions.inject.js");
});
对于inject.js,构建操作被设置为嵌入式资源,逻辑路径是正确的,因为我的项目名称是MyApi.Api,文件位于项目中名为SwaggerExtensions的文件夹中
3条答案
按热度按时间piv4azn71#
当使用自定义资源时,资源名称应该包含项目的默认命名空间,如下所述。在您的情况下,配置应该是:
2fjabf4q2#
我花了很多时间试图弄清楚一个同名的方法有不同的行为。Startup.Configure中的配置需要来自wwwroot的相对路径:
Get started with Swashbuckle and ASP.NET Core
pepwfjgg3#
在.NET 6上也有同样的问题。
解决方案是在
WebApi
项目中包含一个wwwroot
文件夹,并将所有自定义文件添加到该文件夹中。Swagger配置的其余部分非常简单。自定义文件目录:
wwwroot/OpenApi/CustomScript.js
Swagger配置:
不要忘记启用
UseStaticFiles
中间件。对于这些自定义文件的
Build action
,它似乎可以使用两个选项:None
和Embedded resource
。希望这能帮助任何有同样问题的人。
P.S.我知道添加一个
wwwroot
文件夹似乎是多余的,我同意。如果有人找到办法,告诉我。