Интеграция Swagger и .Net Core 3

Я документирую свой веб-API с помощью чванства. Однако когда я запускаю свой проект, он выдает ошибку «Метод не найден: 'Void Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware ...».

Я следил только за обучающими материалами с YouTube. Не уверен, в чем причина ошибки.

Мой проект - .Net Core 3.

 internal class SwaggerConfiguration
{
    public static void Configure(IServiceCollection services)
    {
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new Info() { Title = "Sample Portal API", Version = "1.0.0.0" });
        });
    }

    public static void Configure(IConfiguration configuration, IApplicationBuilder app)
    {
        var swaggerOptions = new SwaggerOptions(configuration).Bind();

        app.UseSwagger(options =>
        {
            options.RouteTemplate = swaggerOptions.Route;
        });


        app.UseSwaggerUI(options =>
        {
            options.SwaggerEndpoint(swaggerOptions.UIEndpoint, swaggerOptions.Description);
        });
    }
    private class SwaggerOptions
    {
        IConfiguration _configuration;
        public SwaggerOptions(IConfiguration configuration)
        {
            _configuration = configuration;
        }
        public string Route { get; set; }
        public string Description { get; set; }
        public string UIEndpoint { get; set; }

        public SwaggerOptions Bind()
        {
            _configuration.GetSection(nameof(SwaggerOptions)).Bind(this);
            return this;
        }
    }
}

это мой класс стартапа

public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);

        SwaggerConfiguration.Configure(services);
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        SwaggerConfiguration.Configure(Configuration, app);

        app.UseHttpsRedirection();

        app.UseRouting();
        app.UseAuthorization();


        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });

    }

Может кто-нибудь пролить свет, заранее спасибо


person Community    schedule 28.09.2019    source источник


Ответы (3)


Я смог запустить это, перейдя по этой ссылке (обновлено 20.08.2019 на момент написания этой статьи):

Начните работу с Swashbuckle и ASP.NET Core

Взгляните также на их ссылку на GitHub:

AspNetCore .Docs

person dnunez32    schedule 28.09.2019
comment
большое спасибо! оно работает! так что чванство для .Net Core 3 все еще находится в стадии предварительной сборки. - person ; 28.09.2019

Вот наименьшее количество шагов, чтобы добавить чванства к вашему проекту.

  1. Запустите команду ниже в PowerShell
Install-Package Swashbuckle.AspNetCore -Version 5.5.1
  1. В классе Startup добавьте эту ссылку '' 'с помощью Microsoft.OpenApi.Models; '' '
  2. Добавьте ниже в метод ConfigureService в классе запуска:
services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
    });
  1. Добавьте ниже к методу Configure в файле startup.cs
// 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 =>
    {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
    })
  1. Вы можете получить доступ к странице swagger по адресу http: // localhost: port / swagger
person brian    schedule 30.10.2019
comment
лучше, чем принятый, который является просто ответом только по ссылке - person Abdul Hameed; 10.06.2020

У меня была эта проблема, и все, что мне нужно было сделать, это обновить пакет Nuget Swashbuckle.AspNetCore до версии 5.4.1 или установить его, если у вас его нет.

person Osman Alanwar    schedule 15.05.2020