C# 控制器敏感地接受来自应用程序/json负载的数据大小写

C# 控制器敏感地接受来自应用程序/json负载的数据大小写,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我正在用OData编写WebApi,遇到了一个问题。问题是控制器只接受区分大小写的数据。例如,当我传递{“name”:“London”}时,它给出了一个空对象和一个错误属性“name”在类型“Taxes.Service.DataLayer.Models.communications”上不存在。确保仅使用由类型定义的属性名称。。但是当我通过{“Name”:“London”}时,一切都正常-对象被创建,值被设置。我不知道到底出了什么问题。谢谢 BaseController.cs public cla

我正在用OData编写WebApi,遇到了一个问题。问题是控制器只接受区分大小写的数据。例如,当我传递
{“name”:“London”}
时,它给出了一个空对象和一个错误
属性“name”在类型“Taxes.Service.DataLayer.Models.communications”上不存在。确保仅使用由类型定义的属性名称。
。但是当我通过
{“Name”:“London”}
时,一切都正常-对象被创建,值被设置。我不知道到底出了什么问题。谢谢

BaseController.cs

public class BaseController<T> : ODataController where T : BaseModel
{
    protected readonly TaxesContext Context;

    public BaseController(TaxesContext context)
    {
        Context = context;
    }

    [HttpPost]
    public async Task<IActionResult> Post([FromBody]T baseObject)
    {
        if (!ModelState.IsValid)
        {
            var errors = ModelState
                .SelectMany(x => x.Value.Errors, (y, z) => z.Exception.Message);

            return BadRequest(errors);
        }

        await Context.Set<T>().AddAsync(baseObject);
        await Context.SaveChangesAsync();
        return Created(baseObject);
    }
}
市政当局.cs

public class BaseModel
{
    public int Id { get; set; }
}
public class Municipality : BaseModel
{
    public string Name { get; set; }
    public ICollection<Tax> Taxes { get; set; }
}
public class Tax : BaseModel
{
    [Required]
    public int MunicipalityId { get; set; }

    [Required]
    public virtual Municipality Municipality { get; set; }

    [Required]
    public virtual TaxFrequency Frequency { get; set; }

    [Required]
    public virtual DateTime StartDate { get; set; }

    [Required]
    public virtual DateTime EndDate { get; set; }

    [Required]
    public virtual double Value { get; set; }
}
public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

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

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

        services.AddDbContext<TaxesContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseMvc(routes =>
        {
            routes.Select().Expand().Filter().OrderBy().MaxTop(100).Count();
            routes.MapODataServiceRoute("odata", "odata", GetEdmModel());
            routes.MapRoute("Default", "{controller}/{action=Index}/{id?}");
        });
    }

    private static IEdmModel GetEdmModel ()
    {
        var builder = new ODataConventionModelBuilder();

        builder.EntitySet<DataLayer.Models.Municipality>("Municipalities");
        builder.EntitySet<DataLayer.Models.Tax>("Taxes");

        var function = builder.Function("MunicipalityWithTax");
        function.ReturnsCollectionViaEntitySetPath<DataLayer.Models.Municipality>("Municipalities");

        return builder.GetEdmModel();
    }
}
Startup.cs

public class BaseModel
{
    public int Id { get; set; }
}
public class Municipality : BaseModel
{
    public string Name { get; set; }
    public ICollection<Tax> Taxes { get; set; }
}
public class Tax : BaseModel
{
    [Required]
    public int MunicipalityId { get; set; }

    [Required]
    public virtual Municipality Municipality { get; set; }

    [Required]
    public virtual TaxFrequency Frequency { get; set; }

    [Required]
    public virtual DateTime StartDate { get; set; }

    [Required]
    public virtual DateTime EndDate { get; set; }

    [Required]
    public virtual double Value { get; set; }
}
public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

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

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

        services.AddDbContext<TaxesContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseMvc(routes =>
        {
            routes.Select().Expand().Filter().OrderBy().MaxTop(100).Count();
            routes.MapODataServiceRoute("odata", "odata", GetEdmModel());
            routes.MapRoute("Default", "{controller}/{action=Index}/{id?}");
        });
    }

    private static IEdmModel GetEdmModel ()
    {
        var builder = new ODataConventionModelBuilder();

        builder.EntitySet<DataLayer.Models.Municipality>("Municipalities");
        builder.EntitySet<DataLayer.Models.Tax>("Taxes");

        var function = builder.Function("MunicipalityWithTax");
        function.ReturnsCollectionViaEntitySetPath<DataLayer.Models.Municipality>("Municipalities");

        return builder.GetEdmModel();
    }
}
公共类启动
{
公共启动(IConfiguration配置)
{
配置=配置;
}
公共IConfiguration配置{get;}
//此方法由运行时调用。请使用此方法将服务添加到容器中。
public void配置服务(IServiceCollection服务)
{
services.AddOData();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddDbContext(options=>options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”));
}
//此方法由运行时调用。请使用此方法配置HTTP请求管道。
公共无效配置(IApplicationBuilder应用程序,IHostingEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
其他的
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc(路由=>
{
routes.Select().Expand().Filter().OrderBy().MaxTop(100.Count();
MapODataServiceRoute(“odata”,“odata”,getedModel());
MapRoute(“默认值”,“{controller}/{action=Index}/{id?}”);
});
}
私有静态IEdmModel GetedModel()
{
var builder=新的ODataConventionModelBuilder();
建筑商实体集(“市政当局”);
建筑商实体集(“税费”);
var function=builder.function(“市政税”);
returnsCollectionViatitySetPath(“市政当局”);
返回builder.GetEdmModel();
}
}
邮差请求

使用以下语句添加camelCase支持:
builder.EnableLowerCamelCase()

private静态IEdmModel GetedModel()
{
var builder=新的ODataConventionModelBuilder();

builder.EnableLowerCamelCase();//你能发布你的
Startup.cs
文件内容吗?谢谢!你是我的英雄!很高兴我能帮上忙!