Domanda

I'm completely new to ADO.NET/WCF Data Services. On my first time setting up and testing an ADO.NET data service, I ran into this puzzling error:

The response requires that version 2 of the protocol be used, but the MaxProtocolVersion of the data service is set to DataServiceProtocolVersion.V1.

References online indicate that I need to set:

config.DataServiceBehavior.MaxProtocolVersion = Common.DataServiceProtocolVersion.V2

However this property is not available in IntelliSense and produces a build error when I code it manually.

I'm using Visual Studio 2008 SP1, .NET 3.5 SP1, and VB.NET. How do I enable version 2 of the protocol?

È stato utile?

Soluzione

After about a day and a half of searching (and reapplying VS2008 SP1), this blog article finally cleared things up:

Astoria V.Next Ships for .NET 3.5 SP1 -> Versioning Issue

Turns out everything was fine with my installation, but I had skipped over the fact that the signature of the InitilizeService() method had changed ever so subtly. As Stephen Forte indicates in his blog:

 1:  //change the IDataServiceConfiguration to DataServiceConfiguration
 2:  public static void InitializeService(DataServiceConfiguration config)
 3:  {
 4:      config.SetEntitySetAccessRule("*", EntitySetRights.All);
 5:      //take advantage of the "2.0" features
 6:      config.DataServiceBehavior.MaxProtocolVersion =
 7:          System.Data.Services.Common.DataServiceProtocolVersion.V2;
 8:  }

The first thing that you need to change is on line 2, change the interface IDataServiceConfiguration to be just DataServiceConfiguration (I am sure that there is a better way to do this, I have not figured it out yet.). Next, set the MaxProtocolVersion property of DataServiceBehavior to V2. After that you can take advantage of all the new features!

Emphasis mine. It's amazing the difference a simple "I" makes. To answer Stephen's concern, this is also backed up by MSDN, but they currently don't point out the difference in referencing the interface vs the implementation object:

Configuring the Data Service (ADO.NET Data Services)

Here's the code in VB:

'change the IDataServiceConfiguration to DataServiceConfiguration
Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
    config.SetEntitySetAccessRule("*", EntitySetRights.All)
    'take advantage of the "2.0" features
    config.DataServiceBehavior.MaxProtocolVersion = System.Data.Services.Common.DataServiceProtocolVersion.V2
End Sub

Compiled, tested, and passed. I have just taken my first step into a larger world...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top