Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 带有Swagger的ASP.NET核心Web API生成错误的属性名称_Asp.net Core_Swagger_Asp.net Core Webapi_Ef Core 2.0 - Fatal编程技术网

Asp.net core 带有Swagger的ASP.NET核心Web API生成错误的属性名称

Asp.net core 带有Swagger的ASP.NET核心Web API生成错误的属性名称,asp.net-core,swagger,asp.net-core-webapi,ef-core-2.0,Asp.net Core,Swagger,Asp.net Core Webapi,Ef Core 2.0,所以我用API建立了一个新的解决方案。正如您在以下邮递员请求中所看到的,此API正在按预期工作: { "Id": 1, "Name": "Samsung" } 斯威格产生了以下代码: { "id": 0, "name": "string" } 这些代码片段显示了我的模型中的一个品牌 如何修复它,使Swagger获得第一个代码段中所示的属性名称 以下是我配置API和模型的方式: 配置服务: public void ConfigureServices(IServiceCollection

所以我用API建立了一个新的解决方案。正如您在以下邮递员请求中所看到的,此API正在按预期工作:

{
 "Id": 1,
 "Name": "Samsung"
}
斯威格产生了以下代码:

{
 "id": 0,
 "name": "string"
}
这些代码片段显示了我的模型中的一个品牌

如何修复它,使Swagger获得第一个代码段中所示的属性名称

以下是我配置API和模型的方式:

配置服务:

public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();

            services.AddMvc().AddJsonOptions(o =>
            {
                o.JsonSerializerOptions.PropertyNamingPolicy = null;
            });

            services.AddDbContext<PhoneCalculatorContext>(options => options.UseSqlServer(
                Configuration["ConnectionStrings:DefaultConnection"]));

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

public class Brand
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

您可以自定义
ISchemaFilter
以显示自定义示例值,如下所示:

1.自定义
ISchemaFilter

public class AddSchemaExamples : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        if (context.ApiModel.Type == typeof(Brand))
        {
            // TODO: Set the example.
            schema.Example = new OpenApiObject
            {
                ["Id"] = new OpenApiInteger(1),
                ["Name"] = new OpenApiString("Samsung")
            };
        }
    }
}
2.Regster
ISchemaFilter

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
    c.SchemaFilter<AddSchemaExamples>();
});
services.AddSwaggerGen(c=>
{
c、 SwaggerDoc(“v1”,新的openapinfo{Title=“myapi”,Version=“v1”});

c、 SchemaFilter

是小写?这是dotnet中现在与rest标准一致的默认设置扫描您添加一个打印,其中swagger显示:@saj我不知道用小写写给定数据是rest标准,因此我猜整个问题与小写无关,我应该只使用小写?如果我的答案是It’这很有帮助,可以吗?
services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
    c.SchemaFilter<AddSchemaExamples>();
});