C# ASP.net核心OData字符串键为空

C# ASP.net核心OData字符串键为空,c#,asp.net-core,odata,C#,Asp.net Core,Odata,我这里有一个奇怪的。我一直在将一些控制器从asp.net odata移植到asp.net核心odata,但在主键方面遇到了一些障碍 在我的.net framework 4.6.2应用程序中,我将GUID作为主键,在.net core应用程序中,我将字符串作为主键。除了一个get(key)方法外,我已经能够让大多数东西都工作了。这是我的方法签名: [HttpGet] [EnableQuery] public async Task<IActionResult> Get([FromODat

我这里有一个奇怪的。我一直在将一些控制器从asp.net odata移植到asp.net核心odata,但在主键方面遇到了一些障碍

在我的.net framework 4.6.2应用程序中,我将GUID作为主键,在.net core应用程序中,我将字符串作为主键。除了一个get(key)方法外,我已经能够让大多数东西都工作了。这是我的方法签名:

[HttpGet]
[EnableQuery]
public async Task<IActionResult> Get([FromODataUri] string key)
{
    // key is null!
}
[HttpGet]
[启用查询]
公共异步任务Get([FromODataUri]字符串键)
{
//密钥为空!
}

请遵循下面的步骤

  • 从NuGet软件包安装Microsoft.AspNetCore.OData
  • StartUp.cs

       public void ConfigureServices(IServiceCollection services)
       {
         services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
         services.AddOData(); //This Is added for OData
       }
    
     public void Configure(IApplicationBuilder app, IHostingEnvironment env)
     {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }
    
        app.UseHttpsRedirection();
        app.UseMvc(routeBuilder =>
        {
            routeBuilder.EnableDependencyInjection(); //This Is added for OData
            routeBuilder.Expand().Select().Count().OrderBy().Filter(); //This Is added for OData
        });
    }
    
  • 在美国石油学会中

    [HttpGet]
    [EnableQuery] //This Is added for OData
    public ActionResult<List<TestModel>> Get()
    {
        var model = new List<TestModel>();
        for (int i = 1; i <= 10; i++)
        {
            var res = new TestModel()
            {
                ID = i,
                Name="Test"+i,
                Mobile="Test"+i,
                City="Test_"+i
            };
            model.Add(res);
        }
        return model;
    }
    public class TestModel
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Mobile { get; set; }
        public string City { get; set; }
    }
    
    [HttpGet]
    [EnableQuery]//这是为OData添加的
    公共行动结果获取()
    {
    var模型=新列表();
    
    对于(int i=1;我请在Startup.cs中添加您的配置以及模型和控制器。我无法用给定的信息重现您的问题。。。