Swagger page is not display as startup page in IIS for .net core 3.1 Web API

Dev*_*rSD 7 iis swagger-ui .net-core-3.1 swashbuckle.aspnetcore

I have published web API application(.Net Core 3.1) on IIS under Default Web Site.\nI have follow the all necessary steps to host .net core application on IIS.\nUsing postman tool I have checked that all API are working correctly.

\n

因为我想在从 IIS 浏览 API 后将 Swagger UI 页面显示为启动页面。\n每当我单击 [browse:XXX:XXX:XXX:XXX:443 (https) ] 链接时,它都会显示This XXX.XXX。找不到 XXX.XXX 页\xe2\x80\x99

\n

浏览器地址:https://https/XXX.XXX.XXX.XXX/API

\n

注意:如果我在上面的 url 末尾添加了“/”,那么它会自动重定向到 swagger 的 Index.html 页面。

\n

我现有的 swagger 源代码

\n
public void ConfigureServices(IServiceCollection services)\n{\n    services.AddSwaggerGen(c =>\n    {\n        c.SwaggerDoc("v1.0.0", new Microsoft.OpenApi.Models.OpenApiInfo\n        {\n            Title = "TestAPI",\n            Version = "v1.0.0",\n            Description = "Test API"\n        });\n\n        // Set the comments path for the Swagger JSON and UI.\n        var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";\n        var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);\n        c.IncludeXmlComments(xmlPath);\n    });\n}\n
Run Code Online (Sandbox Code Playgroud)\n
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n{\n   app.UseSwagger();\n   app.UseSwaggerUI(c =>\n   {\n      c.SwaggerEndpoint("./swagger/v1.0.0/swagger.json", "TestAPI V1.0.0");\n      c.RoutePrefix = "";\n   });\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在 IIS 中,我已按名称 (API) 添加了应用程序。\n我想在从 IIS 访问后将 swagger Index.html 页面显示为默认页面。

\n

我不明白代码级别缺少任何内容,或者需要在 IIS 上进行任何设置才能显示默认的 swagger 页面。

\n

附加信息:

\n

Swagger 包:Swashbuckle.AspNeteCore(5.3.1)

\n

操作系统:Windows 10

\n

IIS:10.0.19041.1

\n

注意:我在 IIS 上将相同的 API 发布为 NewWebSite(不在默认网站下),然后它可以按预期工作。

\n

kev*_*vin 11

就我而言,Swagger 正在工作,但它只是没有显示为启动页面。在launchsettings.json中的配置文件下添加"launchUrl": "swagger"对我有用。

{ 
  "iisSettings": {
    ...
  },
  "profiles": {
    "IIS Express": {
    "commandName": "IISExpress",
    "launchBrowser": true,
    "launchUrl": "swagger",
    "environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "Development"
    }
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)


Abr*_*ian -2

基本上,您所做的一切足以配置Swagger UI扩展。
当我们为文件设置以下代码段后Swagger JSON,网站的基地址将显示Swagger索引页面。

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
    c.RoutePrefix = string.Empty;
});
Run Code Online (Sandbox Code Playgroud)

同时,Swagger.json当我们配置XML注释路径时,也可以正常生成文件。

var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
c.IncludeXmlComments(xmlPath);
Run Code Online (Sandbox Code Playgroud)

官方教程。
https://learn.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-3.1&tabs=visual-studio
IIS 配置可能有问题。就我而言,默认网站和新网站都可以正常工作。我怀疑您的默认网站中是否存在某些 URL 规则。请检查默认网站的 URL 重写扩展下是否存在 URL 规则。
另外,在我们删除了一些URL规则后,请清除本地浏览器缓存,或者在浏览器的私密窗口中进行验证。
如果问题仍然存在,请随时告诉我。