Как перенаправить из корневого url в / swagger/ui / index?
у меня есть проект WebApi с установленным на нем Swashbuckle.
в настройки по умолчанию, я должен открыть в браузере http://localhost:56131/swagger/ui/index для просмотра описания моих операций и тестовой страницы. Я хочу, чтобы он был доступен из корня сайта: http://localhost:56131/. Как я могу достичь этого?
4 ответов
влияние этот ответ на аналогичный вопрос, немного измененный код:
public class WebApiConfig
{
    public static void Configure(IAppBuilder app)
    {
        var httpConfig = new HttpConfiguration();
        // Attribute routing
        config.MapHttpAttributeRoutes();
        // Redirect root to Swagger UI
        config.Routes.MapHttpRoute(
            name: "Swagger UI",
            routeTemplate: "",
            defaults: null,
            constraints: null,
            handler: new RedirectHandler(SwaggerDocsConfig.DefaultRootUrlResolver, "swagger/ui/index"));
        // Configure OWIN with this WebApi HttpConfiguration
        app.UseWebApi(httpConfig);
    }
}
таким образом, нет необходимости создавать новый контроллер WebAPI, как это сделал @bsoulier в своем ответе.
это решение основано на уже существующем классе RedirectHandler на Swashbuckle.Core сборка.
Если вы наверняка используете проект Web API, вы можете:
- включить Маршрутизация Атрибутов Http,
 - создайте следующий метод в существующем или новом контроллере:
 
[Route(""), HttpGet]
[ApiExplorerSettings(IgnoreApi = true)]
public HttpResponseMessage RedirectToSwaggerUi()
{
    var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.Found);
    httpResponseMessage.Headers.Location = new Uri("/swagger/ui/index", UriKind.Relative);
    return httpResponseMessage;
}
обратите внимание на использование ApiExplorerSettings атрибут, так что он не отображается в определении Swagger.
еще проще вариант ответа:
public class DefaultController : Controller
{
    [Route(""), HttpGet]
    [ApiExplorerSettings(IgnoreApi = true)]
    public RedirectResult RedirectToSwaggerUi()
    {
        return Redirect("/swagger/");
    }
}
чем проще, тем лучше! Этот работает на меня.
если задача позволяет, в _Layout.chtml просто добавьте следующую строку в голову:
<meta http-equiv="refresh" content="0; URL='/swagger'" />
это перенаправит вас на swagger / index после загрузки страницы