我有一个WCF服务和一个通过OData协议进行通信的MVC4应用程序。但我有以下问题:协议版本必须至少为版本3才能处理集合类型。如何(以及在何处)更改所使用的OData协议的版本?
为了清楚起见,这是我生成错误的MVC4应用程序部分:
String serviceAddress = ConfigurationManager.AppSettings["WCFADDRESS"];
DataServiceContext context = new DataServiceContext(new Uri(serviceAddress));
List<Result> prod = context.Execute<Result>(new Uri(serviceAddress + "sp2?cid="+clientID), "GET", false).ToList();
在第三行,我发现错误。 我已经检查了WCF服务和MVC app中的OData Reference版本:5.5和5.0 ......如何解决? 谢谢!
对于法国人来说,这是确切的错误: Microsoft.Data.OData.ODataException:Les types de collection sont uniquement pris en charge dans la version 3.0 du protocole OData et les versionsultérieures。 Il n'est pas pris en charge dans la version 1.0。
答案 0 :(得分:1)
WCF数据服务(5.5)的版本独立于正在使用的协议版本。例如,您可以拥有仅支持OData v2的5.5服务器。最新版本的OData是版本3,版本4即将推出。
如果您使用WCF数据服务作为OData服务器的框架,则可以使用MaxProtocolVersion配置属性设置最大协议版本:
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
// .. Other configuration goes here ...
// Set the max protocol version of the server to be v3
config.DataServiceBehavior.MaxProtocolVersion =
System.Data.Services.Common.DataServiceProtocolVersion.V3;
}
(InitializeService()
方法应该在您的数据服务类中,该类派生自DataService<T>
)