1

我有一个 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 应用程序中的 OData 参考版本: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 versions ultérieures。Il n'est pas pris en charge dans la version 1.0.

4

1 回答 1

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>

于 2013-07-10T17:44:48.350 回答