JayData从OData控制器读取时抛出ODataContentTypeException异常。

3
我有一个ODataController,在浏览器中仅进行GET时似乎运行正常。 但是当我使用JayData读取时,会得到500的响应码。我可以看到GetItems()在我的ODataController中被调用,并返回有效的Items列表。但是我看到了一些ODataContentTypeException异常被抛出,具有以下消息:
“附加信息:找不到与响应内容类型匹配的支持的MIME类型。 其中没有一种受支持的类型 'application / atom + xml; type = feed,application / atom + xml,application / json; odata = verbose,application / json' 与内容类型 'application / json; odata = fullmetadata; charset = utf-8' 匹配。”
然后
“附加信息:找不到与响应内容类型匹配的支持的MIME类型。 其中没有一种受支持的类型 'application / atom + xml; type = feed,application / atom + xml,application / json; odata = verbose,application / json' 与内容类型 'application / json; odata = fullmetadata; charset = utf-8' 匹配。”
然后
“附加信息:找不到与响应内容类型匹配的支持的MIME类型。 其中没有一种受支持的类型 'application / xml,application / json; odata = verbose,application / json' 与内容类型 'application / json; odata = fullmetadata; charset = utf-8' 匹配。”
最后
“附加信息:找不到与响应内容类型匹配的支持的MIME类型。 其中没有一种受支持的类型 'application / xml,application / json; odata = verbose,application / json' 与内容类型 'application / json; odata = fullmetadata; charset = utf-8' 匹配。”
我假设这些是我收到500响应码的原因,但似乎没有办法确定。 根据Chrome的请求,正在发送以下请求:
“Accept:application / atomsvc + xml; q = 0.8,application / json; odata = fullmetadata; q = 0.7,application / json; q = 0.5,/; q = 0.1”
“Accept-Encoding:gzip,deflate,sdch”
只返回一个带有500错误的空响应。还有其他人遇到这个问题吗?
“Accept-Language:en-US,en; q = 0.8,en-CA; q = 0.6”
1个回答

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能够记录可用的配置选项,那就太好了。


1
我本想给你点赞一千次,但不幸的是,好先生,我只被允许一次。 - Eonasdan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接