OData协议版本

时间:2013-07-10 10:04:32

标签: wcf asp.net-mvc-4 odata

我有一个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。

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>