我有一个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=完整元数据;charset=utf-8'。
然后
其他信息:找不到与响应的内容类型匹配的受支持的MIME类型。不支持任何类型的application/atom+xml;type=feed,application/atom+xml,application/json;odata=verbose,application/json与内容类型"application/json"匹配;odata=完整元数据;charset=utf-8'。
然后
其他信息:找不到与响应的内容类型匹配的受支持的MIME类型。不支持任何类型的application/xml、application/json;odata=verbose,application/json与内容类型"application/json"匹配;odata=完整元数据;charset=utf-8'。
最后是
其他信息:找不到与响应的内容类型匹配的受支持的MIME类型。不支持任何类型的application/xml、application/json;odata=verbose,application/json与内容类型"application/json"匹配;odata=完整元数据;charset=utf-8'。
我想这就是我要回来的500英镑的原因,但似乎没有办法确定。根据Chrome的说法,正在发送的请求请求如下:
Accept:application/atomsvc+xml;q=0.8,application/json;odata=完整元数据;q=0.7,application/json;q=0.5,/;q=0.1
接受编码:gzip、deflate、sdch
返回的只有一个错误为500的空响应。还有人遇到这种麻烦吗?
接受语言:en-US,en;q=0.8,en-CA;q=0.6
为了让这个解决方案有意义,需要更多的信息:使用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能够记录可用的配置选项,那就太好了。