我已经在IIS的“默认网站”下发布了Web API应用程序(.Net Core 3.1)。 我已按照所有必要步骤在IIS上托管.net核心应用程序。 使用邮递员工具,我检查了所有API是否正常工作。
我想从IIS浏览API后将Swagger UI页面显示为启动页面。 每当我单击[browse:XXX:XXX:XXX:XXX:443(https)]链接时,就会从IIS中显示找不到此XXX.XXX.XXX.XXX页面
浏览器网址:https://https/XXX.XXX.XXX.XXX/API
注意:如果我在上述网址的末尾添加了“ /”,那么它将自动重定向到swagger的Index.html页面。
我现有的摇摇欲坠的源代码
public void ConfigureServices(IServiceCollection services)
{
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1.0.0", new Microsoft.OpenApi.Models.OpenApiInfo
{
Title = "TestAPI",
Version = "v1.0.0",
Description = "Test API"
});
// Set the comments path for the Swagger JSON and UI.
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
c.IncludeXmlComments(xmlPath);
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("./swagger/v1.0.0/swagger.json", "TestAPI V1.0.0");
c.RoutePrefix = "";
});
}
在IIS中,我已通过名称(API)添加了应用程序。 从IIS访问后,我想将大张旗鼓的Index.html页面显示为默认页面。
我不明白代码级别上是否缺少任何内容,或者需要在IIS上进行任何设置以显示默认的摇摇欲坠页面。
其他信息:
Swagger软件包:Swashbuckle.AspNeteCore(5.3.1)
OS:Windoes 10
IIS:10.0.19041.1
注意:我在IIS上以NewWebSite(不在默认网站上)发布了相同的API,然后可以按预期使用。
答案 0 :(得分:1)
就我而言,Swagger 正在工作,但只是没有显示为启动页面。在 launchsettings.json 中的配置文件下添加 "launchUrl": "swagger" 对我有用。
{
"iisSettings": {
...
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
...
}
答案 1 :(得分:0)
基本上,您所做的一切足以配置Swagger UI
扩展名。
在为Swagger JSON
文件设置以下代码段之后,网站的基址将显示Swagger
索引页。
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.RoutePrefix = string.Empty;
});
同时,当我们配置XML注释路径时,可以正确生成Swagger.json
文件。
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
c.IncludeXmlComments(xmlPath);
官方教程。
https://docs.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-3.1&tabs=visual-studio
IIS配置可能有问题。在我这方面,默认网站和新网站都可以正常工作。我怀疑您的默认网站中是否存在某些URL规则。请检查默认网站的URL重写扩展名下是否存在URL规则。
此外,在删除一些URL规则后,请清除本地浏览器缓存,或在浏览器的私有窗口中进行验证。
随时让我知道问题是否仍然存在。
答案 2 :(得分:0)
这个设置对我有用。
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("v1/swagger.json", "My Api v1");
});