从OData控制器读取JayData会抛出ODataContentTypeException

时间:2014-01-14 04:00:26

标签: asp.net-web-api odata jaydata

我有一个ODataController,如果我只是通过我的浏览器进行GET,它似乎工作正常。但是当我使用JayData阅读时,我得到500回。我可以看到在我的ODataController中调用GetItems()并返回一个有效的Items列表。我,但我看到一些ODataContentTypeException异常被抛出,其中包含以下消息:

  

其他信息:找不到与响应的内容类型匹配的受支持的MIME类型。没有受支持的类型'application / atom + xml; type = feed,application / atom + xml,application / json; odata = verbose,application / json'匹配内容类型'application / json;的OData = fullmetadata;字符集= UTF-8' 。

然后

  

其他信息:找不到与响应的内容类型匹配的受支持的MIME类型。没有受支持的类型'application / atom + xml; type = feed,application / atom + xml,application / json; odata = verbose,application / json'匹配内容类型'application / json;的OData = fullmetadata;字符集= UTF-8' 。

然后

  

其他信息:找不到与响应的内容类型匹配的受支持的MIME类型。没有受支持的类型'application / xml,application / json; odata = verbose,application / json'匹配内容类型'application / json;的OData = fullmetadata;字符集= UTF-8' 。

最后

  

其他信息:找不到与响应的内容类型匹配的受支持的MIME类型。没有受支持的类型'application / xml,application / json; odata = verbose,application / json'匹配内容类型'application / json;的OData = fullmetadata;字符集= UTF-8' 。

我认为这些是我回来的500的原因,但似乎没有一种方法可以确定。 根据Chrome,发送的请求请求以下内容:

  

接受:application / atomsvc​​ + xml; q = 0.8,application / json; odata = fullmetadata; q = 0.7,application / json; q = 0.5, / ; q = 0.1

     

接受编码:gzip,放气,SDCH

收到500错误的空响应。其他人有这个麻烦吗?

  

接受语言:EN-US,EN; Q = 0.8,EN-CA; Q = 0.6

1 个答案:

答案 0 :(得分:4)

为了使这个解决方案有意义,需要更多信息:使用MVC5,使用WebAPI 2.0和OData nuget包版本5.0

由于某些原因,JayData正在尝试使用OData v2。所以为了修复它,我挖掘了源代码,发现你可以指定V3。

更改上下文的配置以包含maxDataServiceVersion:“3.0”。

由此:

dbContext = new MyEntities({ name: 'oData', oDataServiceHost: '/odata' }));

对此:

dbContext = new MyEntities({ name: 'oData', oDataServiceHost: '/odata', maxDataServiceVersion: '3.0' }));

这对我有用。

如果JayStack会记录可用的配置选项,那就太好了。