1

MVC で VS2013 を使用し、単純な ODataController を公開しています。

実際、私は基本的にここのチュートリアルに従いました: http://blogs.msdn.com/b/webdev/archive/2013/01/29/getting-started-with-asp-net-webapi-odata-in-3-シンプルな手順.aspx

私は odata4j を使用して Android でサービスを利用しようとしていますが、現在、odata メタデータが 3.0 バージョンのプロトコル (最小 + 最大) のみをサポートしていると報告するという問題が発生しています。

 <edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="3.0" m:MaxDataServiceVersion="3.0">

WebApiConfig.cs ファイルの EdmModel でこれを変更しようとしました。

 ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
 builder.DataServiceVersion = new Version(2, 0);
 builder.EntitySet<Product>("Products");

これにより、$metadata 応答が修正されますが、応答ヘッダーが次のように報告されるため、十分な深さにはなりません (DataServiceVersion はまだ 3.0 であることに注意してください)。

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/xml; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
DataServiceVersion: 3.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 08 Nov 2013 06:20:40 GMT
Content-Length: 1457

ここで間違ったツリーを吠えていますか、それともサービスのサポート OData プロトコル バージョンを調整するための適切なアプローチはありますか?

4

3 に答える 3

0

リクエストに DataServiceVersion ヘッダーを追加してみてください。

GET /odata/Customers HTTP/1.1
Host: localhost:42980
Connection: keep-alive
DataServiceVersion: 2.0
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64)...
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
DataServiceVersion: 2.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 11 Nov 2013 05:51:51 GMT
Content-Length: 24
于 2013-11-11T08:05:58.913 に答える
0

より良い答えがない場合:

OData 拡張コードによってヘッダーがどのように設定されているかによっては、コントローラー内でrequestヘッダーを操作することにより、ヘッダー値をオーバーライドできる場合があります。これは正しい解決策ではなく、単なる回避策です。効いても受け付けません。

PS: ここで適切な回答が得られない場合は、開発者に直接情報を求めるか、単純にコードを読んで、そのヘッダーがどのように設定されているか、自分または彼らが何か間違っているかどうかを判断することをお勧めします。 (私の意見では、あなたがそうであることは明らかではないため).

于 2013-11-12T09:51:13.307 に答える