Swagger UI не загружается - PullRequest
       41

Swagger UI не загружается

0 голосов
/ 09 января 2019

Swagger UI не загружается, Json загружается, как и ожидалось, но существует проблема с поддерживаемыми файлами js, css.

you can see the issues in this images

Ответы [ 3 ]

0 голосов
/ 09 января 2019

Причину этой проблемы необходимо выполнить нижеуказанные шаги:

  1. В файле Startup.cs есть метод «ConfigureServices», в котором необходимо выполнить следующие действия:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    
        // Configure database connection
        services.Configure<Settings>(options =>
        {
            options.ConnectionString = Configuration.GetSection("database:ConnectionString").Value;
            options.Database = Configuration.GetSection("Db:Database").Value;
        });
    
        //register the RecordedMediaContext dependency here
        services.AddTransient<ITestService, TestService>();
        // Register the Swagger generator, defining 1 or more Swagger documents
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
    
            // Set the comments path for the Swagger JSON and UI.
            var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
            var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
            c.IncludeXmlComments(xmlPath);
        });
    
        // Max file upload sixe 5gb =5,368,709,120 bytes
        services.Configure<FormOptions>(x => x.MultipartBodyLengthLimit = 5368709120);
    }
    
  2. Затем в метод Configure для того же файла Startup.cs добавьте следующий код

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        string baseApiUrl = Configuration.GetSection("BaseApiUrl").Value;
        // Enable middleware to serve generated Swagger as a JSON endpoint.
        app.UseSwagger();
    
        // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), 
        // specifying the Swagger JSON endpoint.
        app.UseSwaggerUI(c =>
        {
            #if DEBUG
                // For Debug in Kestrel
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "Web API V1");
            #else
                // To deploy on IIS
                c.SwaggerEndpoint(""+baseApiUrl+"/swagger/v1/swagger.json", "My API V1");
            #endif
        });
    
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }
    
        //Accept All HTTP Request Methods from all origins
        //app.UseCors(builder => builder.AllowAnyHeader().AllowAnyOrigin().AllowAnyMethod());
    
        app.UseHttpsRedirection();
        #if !DEBUG
            app.UseDefaultFiles();
            app.UseStaticFiles();
        #endif
        app.UseMvc();
    }
    

    Спасибо.

0 голосов
/ 09 января 2019

Вы включили StaticFiles при запуске?

app.UseStaticFiles();
0 голосов
/ 09 января 2019

Попробуйте скопировать каталог / dist в vendor / swagger-api / swagger-ui внутри вашего проекта. Я не уверен в правильном пути, но я столкнулся с той же проблемой, и она сработала для меня. Кроме того, попробуйте предоставить более подробную информацию о проблеме, с которой вы столкнулись, возможно, также фрагменты кода. Или попробуйте следующее:

  1. Проверьте, есть ли у всех ваших методов контроллера тег [http]. Если они все работают, но все еще не работают, перейдите к шагу 2
  2. В вашей функции настройки, чтобы убедиться, что у вас есть app.UseStaticFiles (); Если это все еще не работает, перейдите к шагу 3
  3. Удалите и переустановите swagger. Если это не работает, перейдите к шагу 4 (только ядро)
  4. Если вы используете Core, установите Microsoft.AspNetCore.StaticFiles и укажите его в своем проекте.
...