C# Visual studio中的OData服务出现406错误

C# Visual studio中的OData服务出现406错误,c#,asp.net-mvc,web,asp.net-web-api,odata,C#,Asp.net Mvc,Web,Asp.net Web Api,Odata,我正试图弄明白为什么我的odata服务无法正常工作,但毫无用处。我一直收到一个406错误,我尝试了所有推荐的解决方案,但都没有效果。下面是我的代码 public class Person { public int Id { get; set; } } public class TestController : ODataController { [EnableQuery] public IQueryable<Person> GetTest() { try

我正试图弄明白为什么我的odata服务无法正常工作,但毫无用处。我一直收到一个406错误,我尝试了所有推荐的解决方案,但都没有效果。下面是我的代码

public class Person
{
    public int Id { get; set; }
}

public class TestController : ODataController
{

[EnableQuery]
public IQueryable<Person> GetTest()
{
        try
        {
            var persons = new List<Person>(){new Person{ Id= 1}};
            return persons.AsQueryable();
        }
        catch (Exception ex)
        {
            var here = "dd";
        }
        return null;
    }
公共类人物
{
公共int Id{get;set;}
}
公共类TestController:ODataController
{
[启用查询]
公共IQueryable GetTest()
{
尝试
{
var persons=new List(){new persons{Id=1}};
返回人员。AsQueryable();
}
捕获(例外情况除外)
{
var here=“dd”;
}
返回null;
}
在我的webapiconfig课程中,我有:

        // Web API routes
        config.MapHttpAttributeRoutes();         

        var builder = new ODataConventionModelBuilder();
                 builder.EntitySet<Person>("Person"); 
        config.MapODataServiceRoute("odata", "odata", builder.GetEdmModel());

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
//Web API路由
config.maphttpAttribute路由();
var builder=新的ODataConventionModelBuilder();
建造商实体集(“人”);
config.MapODataServiceRoute(“odata”,“odata”,builder.GetEdmModel());
config.Routes.MapHttpRoute(
名称:“DefaultApi”,
routeTemplate:“api/{controller}/{id}”,
默认值:新建{id=RouteParameter.Optional}
);
config.IncludeErrorDetailPolicy=IncludeErrorDetailPolicy.Always;

它一直失败,出现406错误。它击中了控制器中的断点,但没有返回数据。

我解决了问题。我使用的是
config.MapODataServiceRoute(…
而不是
config.Routes.MapODataServiceRoute…
一旦我更改了它,并且有了正确的使用语句,一切都开始工作。

在哪一行出现异常?您是否尝试过
[Queryable]
而不是
[EnableQuery]
attribute?代码中没有任何异常,只有fiddler或任何客户端出现406错误。@JotaBe,它不是重复的。Queryable已弃用,不起作用。您使用的是哪个版本?您是否尝试过使用VS默认支架创建应用程序的“教程版本”,并检查它是否起作用?(教程版本:创建EF模型,添加OData包,使用VS脚手架)这可能是CORS问题吗?您是否尝试过“接受=*/*”您的请求中的标题?能否将Fiddler或console捕获的所有请求标题显示给Odata服务?我解决了问题,希望这对其他人有所帮助。我使用的是config.MapODataServiceRoute(…而不是config.Routes.MapODataServiceRoute…只要我更改了它,并使用了正确的using语句,一切都开始工作了。谢谢大家的帮助!!