如何在Asp.NetCore2.x中重定向根到swagger?

j5fpnvbx  于 2022-11-06  发布在  .NET
关注(0)|答案(8)|浏览(143)

我正在构建与Swagger集成的Asp.NET Core 2.x Web API。要访问Swagger,我必须在URL后附加/swagger,例如https://mywebapi.azurewebsites.net/swagger/
如何将https://mywebapi.azurewebsites.net/重定向到https://mywebapi.azurewebsites.net/swagger/

yyyllmsg

yyyllmsg1#

从Nuget安装Microsoft.AspNetCore.重写
在启动. cs中

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

之前

app.UseMvc();

加了

var option = new RewriteOptions();
option.AddRedirect("^$", "swagger");
app.UseRewriter(option);
bpsygsoo

bpsygsoo2#

在启动. cs中

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

您应该有设定Swagger UI选项的区段。请新增RoutePrefix选项并将其设定为空字串。

app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My service");
                c.RoutePrefix = string.Empty;  // Set Swagger UI at apps root
            });
jvlzgdj9

jvlzgdj93#

创建如下所示的默认控制器:

using Microsoft.AspNetCore.Mvc;

namespace Api
{
    [ApiExplorerSettings(IgnoreApi = true)]
    public class DefaultController : Controller
    {
        [Route("/")]
        [Route("/docs")]
        [Route("/swagger")]
        public IActionResult Index()
        {
            return new RedirectResult("~/swagger");
        }
    }
}

任何URL“/"、“/docs”或“/swagger”都将被重定向到“/swagger”。

bsxbgnwa

bsxbgnwa4#

在Startup.cs上,在以下位置之后:

app.UseSwaggerUI(options =>
                  {
                      options.SwaggerEndpoint("/swagger/v1/swagger.json", "API V1");

添加:

options.RoutePrefix = string.Empty;

这将使你的根URL成为主API URL。

qq24tv8q

qq24tv8q5#

1.打开启动设置.json文件。
1.在**“配置文件”节点下,根据您的设置,您应该有一个或多个配置文件。在可能的情况下,我有“IIS Express”和另一个以我的项目名称命名的配置文件( 例如WebApplication1),现在将launchUrl条目更改为**“launchUrl”:“ swagger ”的**解决了我的问题。
1.如果这不起作用,并且您有其他配置文件,请执行相同的操作并进行测试。

3npbholx

3npbholx6#

我已经用“launchUrl”修改了launchSettings.json:使用“swagger”代替“launchUrl”:“API/值”
对我来说是有效的,如果不适用的话,请删除c.RoutePrefix = string.Empty;使用SwaggerUI配置。

bnlyeluc

bnlyeluc7#

如果要保留路径/swagger/index. html,并且要从/(根目录)重定向到该路径,则可以在aspnetcore 6中使用以下命令:

app.UseEndpoints(endpoints =>
{
    ...

    endpoints.Map("/", context => Task.Run((() =>
        context.Response.Redirect("/swagger/index.html"))));

    ...
});
lo8azlld

lo8azlld8#

一种简单的方法是直接通过IApplicationBuilder.Use()进行重定向:

app.Use(async (context, next) =>
{
    if (!context.Request.Path.Value.Contains("/swagger", StringComparison.OrdinalIgnoreCase))
    {
        context.Response.Redirect("swagger");
        return;
    }

    await next();
});

相关问题