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

406 error with OData service in Visual studio

我想弄清楚为什么我的 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;
    }

在我的 webapiconfig class 中,我有:

        // 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;

它一直失败并显示 406 错误。它在我的控制器中命中断点,但没有 return 数据。

我想通了。我使用的是 config.MapODataServiceRoute(... 而不是 config.Routes.MapODataServiceRoute... 一旦我更改了它,并且使用了正确的语句,一切就开始工作了。