我已经在我的.NET 6 Web API项目中配置了Swagger。在本地,我可以访问Swagger文件。下面是我的代码。
public static void ConfigureSwaggerMiddleware(this WebApplication app)
{
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.yaml", "API V1");
});
}
else
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("swagger/v1/swagger.yaml", "API V1");
c.RoutePrefix = "api/abc";
});
}
}
现在,我想在开发、测试和更高版本的环境(如API)中配置其URL。我正在尝试上述代码,但收到错误消息
找不到网址为的网页:本地主机:7120
1条答案
按热度按时间jjjwad0x1#
如果你只是改变了路由前缀,恐怕你想要的东西是不能实现的。
当我们没有为使用swagger UI设置任何配置选项时,它会将默认的URL设置为
v1/swagger.json
,并带有默认的路由前缀public string RoutePrefix { get; set; } = "swagger";
。这会使我们获取swagger.json
文件来加载索引页。当您更改路由前缀值时,它会使您的API应用程序无法找到swagger配置文件,这将使其出现404错误。因此我们需要更改
launchsetting.json
并添加app.UseSwagger
选项。我参考了this answer。这是我在
Program.cs
和launchsetting.json
中的配置,我更改了"launchUrl": "api/abc/swagger"
。然后当API应用程序运行时,它将指向
https://localhost:7212/api/abc/swagger/index.html
并显示API。