SwaggerUI показывает сообщения типа «Не удалось разрешить ссылку: не найден» - PullRequest
0 голосов
/ 09 апреля 2020

В настоящее время я занимаюсь разработкой. Net Core 3.1 Service с SwaggerUI. На самом деле я получаю ошибки в пользовательском интерфейсе Swagger: Swagger UI Errors

Когда я смотрю в DevTools моего браузера, я вижу, что SwaggerUI делает следующий неправильный вызов:

Swagger Address

Справочная информация: Моя служба размещается в качестве подстраницы на IIS. Поэтому я настроил Swagger следующим образом (Startup.cs):

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseHttpsRedirection()
        .UseRouting()
        .UseAuthentication()
        .UseAuthorization()
        .UseEndpoints(endpoints => endpoints.MapControllers())
        .UseSwagger()
        .UseSwaggerUI(c =>
                        {
                            c.SwaggerEndpoint("./swagger/v1/swagger.json", ServiceConstants.ServiceDisplayName);
                            c.RoutePrefix = string.Empty;
                        });
}

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(IISDefaults.AuthenticationScheme);
    services.Configure<IISOptions>(options =>
                                    {
                                        options.AutomaticAuthentication = true;
                                        options.ForwardClientCertificate = true;
                                    });
    services.AddSwaggerGen(c => c.SwaggerDoc("v1", new OpenApiInfo { Title = ServiceConstants.ServiceDisplayName, Description = ServiceConstants.ServiceDescription, Version = "v1" }));
}

Я уже пробовал без относительного пути ./swagger/v1/swagger.json, но это работает только локально. I .NetCore 2.1 У меня никогда не было такой проблемы.

Пример моего контроллера такой:

[Authorize, Route(nameof(AdminController))]
public class AdminController : Controller
{
    [HttpPost, Route(nameof(ClearAllCaches))]
    public void ClearAllCaches()
    {
        // Do Something
    }
}

Я уже прочитал много возможных решений, но все они не будут работать с .NetCore 3.1. Я использую следующие NugetPackages для Swagger:

Nuget Packages

Сам Swagger работает нормально, но ошибки немного раздражают. У кого-нибудь есть подсказка?

Большое спасибо!

1 Ответ

0 голосов
/ 09 апреля 2020

Запрашиваемый URL, кажется, дублирует /swagger/v1 например, https://yoururl/swagger/v1/swagger/v1/swagger.json

Я бы посмотрел на настройку swashbuckle. Попробуйте:

  • удалить . из SwaggerEndpoint
  • удалить c.RoutePrefix = string.Empty;
...