我在 net5 中部署了一个简单的 Web API,启用了 swagger(使用默认设置),这意味着在Startup.cs中:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "MyCompany.WebApi", Version = "v1" });
});
Run Code Online (Sandbox Code Playgroud)
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyCompany.WebApi v1"));
Run Code Online (Sandbox Code Playgroud)
我将相同的应用程序部署到 2 个本地 IIS 网站,第一个作为在默认端口 80 上运行的默认网站的应用程序,如下所示:
第二个作为单独的 WebSite 节点运行在端口 8085 上,如下所示:
然后对于第二个(作为单独的 WebSite 节点托管),一切正常,因此我可以看到我的 API 定义:
但对于第一个,作为默认网站下的应用程序托管的API 文档无法加载:

因此,看起来 swagger 正在搜索 index.html 以在网站的“根”中显示 Swagger-UI,而在第一个选项(应用程序托管在 Default WebSite 文件夹下)的情况下,它找不到显示 swagger UI 的方式。在这种情况下,我们是否需要在 swagger 定义中添加一些特定的内容?
感谢您的任何回复!
以马内利.
你试过这个吗:
app.UseSwaggerUI(c => c.SwaggerEndpoint("swagger/v1/swagger.json", "MyCompany.WebApi v1"));
Run Code Online (Sandbox Code Playgroud)
我从 swagger json 路径中删除了开头的“/”。
| 归档时间: |
|
| 查看次数: |
7392 次 |
| 最近记录: |