gpt4 book ai didi

swashbuckle - 当 Web 应用程序托管在子目录中时,ASP.NET Core Swagger 使用不正确的 json url

转载 作者:行者123 更新时间:2023-12-04 15:10:47 24 4
gpt4 key购买 nike

我关注了these instructions向我的 ASP.NET Core 应用程序添加招摇。

当我将它作为根网站托管时它工作正常,但是当我将应用程序作为现有网站上的别名托管时,例如 myserver.com/myapp,swagger 将寻找 swagger .json 的 URL 不正确并报告:*无法从 https://myserver.com/swagger/v1/swagger.json 读取 swagger JSON。它应该改用 https://myserver.com/myapp/swagger/v1/swagger.json

我得到的信息是:

Can't read swagger JSON from https://myserver.com/swagger/v1/swagger.json

如何配置 swashbuckle/swagger 以使用应用程序基本路径并在正确的位置查找 swagger.json 文件?

我在 IIS 上托管。

swashbuckle的版本是:

"Swashbuckle": "6.0.0-beta902"

我怀疑我必须在 Startup.csConfigure 方法中的 app.UseSwaggerUi() 中添加一些内容,但是我不确定是什么。

启动配置:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();

if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}

app.UseStaticFiles();

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});

// Enable middleware to serve generated Swagger as a JSON endpoint
app.UseSwagger();

// Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
app.UseSwaggerUi();
}

最佳答案

您可以使用 ASPNETCORE_APPL_PATH 环境变量来获取应用程序的基本路径。

app.UseSwaggerUI(c =>
{
string basePath = Environment.GetEnvironmentVariable("ASPNETCORE_APPL_PATH");
if (basePath == null) basePath = "/";
c.SwaggerEndpoint($"{basePath}swagger/v1/swagger.json", "My API");
});

关于swashbuckle - 当 Web 应用程序托管在子目录中时,ASP.NET Core Swagger 使用不正确的 json url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40936661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com