无法从“ Microsoft.OpenApi.Models.OpenApiInfo”转换为“ Swashbuckle.AspNetCore.Swagger.Info”

时间:2019-07-17 16:34:58

标签: c# swagger swashbuckle openapi

在尝试运行swashbuckle时出现此错误。有任何想法吗?

我的ConfigureServices类中有这个

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

这在我的配置类中

            app.UseSwagger();

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

4 个答案:

答案 0 :(得分:3)

Swashbuckle.AspNetCore版本5.0.0 (尚未发布,于2019年11月)之前,SwaggerDoc扩展方法需要一个Swashbuckle.AspNetCore.Swagger.Info参数。因此,您必须编写:

// Register the Swagger generator, defining 1 or more Swagger documents
services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
});

尤其是如果您来自:Get started with Swashbuckle and ASP.NET Core

从5.0.0版开始,SwaggerDoc扩展方法现在需要一个Microsoft.OpenApi.Models.OpenApiInfo参数。

答案 1 :(得分:0)

我今天也遇到了同样的问题。查看Microsoft文档之后,看来SwaggerDoc正在寻找一个字符串和一个Info参数。在文件顶部,请确保您包含using Swashbuckle.AspNetCore.Swagger;并将OpenApiInfo替换为Info

services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new Info { Title = "testing", 
            Version = "v1" });
        });

答案 2 :(得分:0)

您需要将软件包Swashbuckle.AspNetCore升级到最新版本v 5.0.0-rc5才能解决此问题。

在该软件包中,它已经包含Microsoft.OpenApi软件包,您无需另外添加插件。 您OpenApiInfoOpenApiContract以及更多属性直接通过可升级包继承。

答案 3 :(得分:0)

这里是C#摇摇欲坠的5.5.0&>的示例

public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo
                {
                    Title = "API Title is",
                    Version = "v1"
                });
            });
        }
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
        //app.UseMvc();
        app.UseSwagger();
        app.UseSwaggerUI(c => {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 api test");
        });
    }