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





Установите 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".
В моем случае я немного изменил URL-адрес перенаправления (return new RedirectResult ("~ / swagger / index.html");), и он работал отлично. Chrome выдавал ошибку «Слишком много перенаправлений», когда URL был только «~ / swagger» без index.html (вы можете узнать причину, если немного проанализируете).
Красивое и чистое решение, протестировано с .NET Core 3.1
В 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
На 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": "", и он работает.
Я изменил launchSettings.json с помощью "launchUrl": "swagger" вместо "launchUrl": "api / values"
работать для меня, если это не работает для вас, удалите c.RoutePrefix = string.Empty; из вашего app.UseSwaggerUI конфигурации.
все еще идет на
/api/valuesпосле добавления этого?