.NET Core WebAPI 部署IIS后 Swagger.json 提示没有找到问题与解决方案

问题:

.NET Core WebAPI 应用程序部署到IIS服务器上运行提示“Not Found /swagger/v1/swagger.json”,但在Visual Stuido工具能正常跑起来。

注:当前WebAPI应用程序是部署在IIS服务器>> Default Web Site 网站下的“应用程序”。

原因:

由IIS在IISExpress\ApplicationURL中的主机名之后的(或没有)附加路径进行托管,例如:

http://host/swagger

但通过IIS在临时环境上进行部署,主机名之后会增加附加路径。

如:

http://staginghost/char/swagger

注:“char”就是附加的路径。

解决方案:

在startup.cs类配置SwaggerUI中间件,指定读取 /swagger/v1/swagger.json 文件路径增加相对路径的判断处理,如下:

app.UseSwaggerUI(c => 
{ 
    string swaggerJsonBasePath = string.IsNullOrWhiteSpace(c.RoutePrefix) ? "." : "..";     
    c.SwaggerEndpoint($"{swaggerJsonBasePath}/swagger/v1/swagger.json", "My API"); 
});

猜你喜欢

转载自blog.csdn.net/LZD_jay/article/details/125549044
今日推荐