无法在 Swagger 中注入 Javascript

问题描述 投票:0回答:3

我尝试在 swagger 中注入 JavaScript 文件时收到 404 错误。以下是我的招摇配置

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 的项目中的文件夹中

swagger swashbuckle
3个回答
10
投票

使用自定义资源时,资源名称应包含项目的默认命名空间,如此处所述。在您的情况下,配置应该是:

c.InjectJavaScript(thisAssembly, "AcctMgmt.SwaggerExtensions.inject.js")

2
投票

我花了很多时间试图弄清楚同名的方法有不同的行为。 Startup.Configure 中的配置需要来自 wwwroot 的相对路径:

public void Configure(IApplicationBuilder app) {
    //
    app.UseSwagger();
    app.UseSwaggerUI(c => {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "Salon API v1");
        c.InjectJavascript("/SwaggerExtension.js");
    });
}

开始使用 Swashbuckle 和 ASP.NET Core


0
投票

.NET 6 也有同样的问题。

解决方案是在

wwwroot
项目中包含一个
WebApi
文件夹,并将所有自定义文件添加到该文件夹中。 Swagger 配置的其余部分非常简单。

自定义文件目录:

wwwroot/OpenApi/CustomScript.js

Swagger 配置:

app.UseSwaggerUI(c =>
{
    c.RoutePrefix = "swagger";
    c.InjectJavascript("/OpenApi/CustomScript.js");
});

不要忘记启用

UseStaticFiles
中间件。

对于这些自定义文件的

Build action
,它似乎可以使用两个选项:
None
Embedded resource

希望这对遇到同样问题的人有所帮助。

附注我知道添加

wwwroot
文件夹似乎多余,我同意。如果有人找到解决方法,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.