Как перенаправить root на swagger в Asp.Net Core 2.x?

Я создаю веб-API Asp.Net Core 2.x, интегрированный с Swagger. Чтобы получить доступ к чванству, мне пришлось добавить / swagger к URL-адресу, например. https://mywebapi.azurewebsites.net/swagger/

Как я могу перенаправить https://mywebapi.azurewebsites.net/ на https://mywebapi.azurewebsites.net/swagger/?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
24
0
13 775
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Установите Microsoft.AspNetCore.Rewrite из Nuget

В Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

перед

app.UseMvc();

Добавлять

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

Создайте контроллер по умолчанию следующим образом:

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".

все еще идет на /api/values после добавления этого?

Piotr Kula 28.11.2018 11:34

В моем случае я немного изменил URL-адрес перенаправления (return new RedirectResult ("~ / swagger / index.html");), и он работал отлично. Chrome выдавал ошибку «Слишком много перенаправлений», когда URL был только «~ / swagger» без index.html (вы можете узнать причину, если немного проанализируете).

Prateek Kumar Dalbehera 24.12.2019 21:11

Красивое и чистое решение, протестировано с .NET Core 3.1

Filip Golewski 03.03.2021 23:56
  1. Откройте файл launchSettings.json.
  2. Под узлом "профили" в зависимости от вашей настройки вы должны иметь один или несколько профилей. На всякий случай у меня были «ИИС Экспресс» и другой с именем с именем моего проекта (например, WebApplication1), теперь меняем запись launchUrl на "launchUrl": "swagger" решил мою проблему.
  3. Если это не работает и у вас есть другие профили, сделайте то же самое и контрольная работа.

В Startup.cs

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)

У вас должен быть раздел, в котором вы устанавливаете параметры пользовательского интерфейса Swagger. Добавьте и установите для параметра RoutePrefix пустую строку.

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

это устанавливает префикс маршрута для swagger, а не перенаправляет на фактический корень swagger. Вам действительно нужно изменить launchSettings.json -> launchUrl

nkalfov 11.12.2018 15:38

На Startup.cs после:

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

Добавлять :

options.RoutePrefix = string.Empty; 

это сделает ваш корневой URL-адрес основным URL-адресом API.

В папке «Свойства», если я не установил в launchSettings.json в разделе «profiles» «launchUrl» значения «» (пустая строка), это не сработало для меня. Теперь у меня есть такой - "launchUrl": "", и он работает.

SushiDynamite 04.08.2020 10:50

Я изменил launchSettings.json с помощью "launchUrl": "swagger" вместо "launchUrl": "api / values"

работать для меня, если это не работает для вас, удалите c.RoutePrefix = string.Empty; из вашего app.UseSwaggerUI конфигурации.

Другие вопросы по теме