如何在Asp.Net Core 2.x中将root重定向到swagger?

Sya*_*hya 11 c# swagger asp.net-core

我正在构建与Swagger集成的Asp.Net Core 2.x web api.为了访问招摇,我不得不将/ swagger附加到网址,例如.https://mywebapi.azurewebsites.net/swagger/

如何将https://mywebapi.azurewebsites.net/重定向到https://mywebapi.azurewebsites.net/swagger/

Sya*_*hya 18

从Nuget 安装Microsoft.AspNetCore.Rewrite

在Startup.cs中

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
Run Code Online (Sandbox Code Playgroud)

之前

app.UseMvc();
Run Code Online (Sandbox Code Playgroud)

var option = new RewriteOptions();
option.AddRedirect("^$", "swagger");
app.UseRewriter(option);
Run Code Online (Sandbox Code Playgroud)


小智 16

在Startup.cs中

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
Run Code Online (Sandbox Code Playgroud)

您应该有设置Swagger UI选项的部分.添加RoutePrefix选项并将其设置为空字符串.

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

  • 这是为swagger设置路由前缀,而不是重定向到实际的swagger根。您实际上必须在launchSettings.json-> launchUrl中进行更改 (2认同)

gpa*_*oli 9

像这样创建一个默认控制器:

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");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何网址“/”、“/docs”或“/swagger”都被重定向到“/swagger”。


小智 6

在 Startup.cs 上,之后:

app.UseSwaggerUI(options =>
                  {
                      options.SwaggerEndpoint("/swagger/v1/swagger.json", "API V1");
Run Code Online (Sandbox Code Playgroud)

添加 :

options.RoutePrefix = string.Empty; 
Run Code Online (Sandbox Code Playgroud)

这将使您的根网址成为主要的 api 网址。