2013-07-10 182 views
1

我有一个WCF服务和一个通过OData协议进行通信的MVC4应用程序。但我遇到以下问题:协议的版本必须至少为版本3才能处理集合类型。如何(以及在​​哪里)更改使用的OData协议的版本?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应用程序中的OData引用版本:5.5和5.0 ...如何解决这个问题? 谢谢!

对于法国speackers,这里是确切的错误: 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没有足够的版本1.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>