. NET Core 3.1 - Swagger не загружается - PullRequest
3 голосов
/ 03 мая 2020

Я пытаюсь реализовать Swagger в моем WebApi. Тем не менее, это не работает. Проблема в том, что чванство. json загружается вечно. Когда я пытаюсь go до /swagger/v1/swagger.json, он загружается вечно, и мой процессор использует пики до 100%.

Это моя конфигурация:

public class Startup
{
    ...

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
       ...

        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new OpenApiInfo
            {
                Version = "v1",
                Title = "ToDo API"
            });
        });

       ...
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider services)
    {
       ...

        app.UseSwagger();

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

        // Setup the endpoints.
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller}/{action}/{id?}");
            endpoints.MapHub<HomeHub>("/homehub");
        });
    }
}

Я, конечно, уже посмотрел на inte rnet, но не смог найти никакого решения. Я не получаю никаких ошибок, так в чем может быть проблема?

Обновление:

Я попытался сгенерировать файл json с CLI, и та же проблема , Он просто загружается и ничего не происходит. Помимо 24 ГБ памяти ...

1 Ответ

2 голосов
/ 04 мая 2020

Я считаю, что один из ваших контроллеров или классов вызывает эту ошибку. Похоже, чванство пытается что-то загрузить рекурсивно.

Я предлагаю вам использовать профилировщик памяти (например, dotMemory), чтобы выяснить, что происходит (что создает эту утечку памяти)

Еще один обходной путь - закомментировать все ваши контроллеры и включить их один один, пока вы не найдете ошибочный код.

Также вы можете проверить этот ответ

...