2017-09-06 1 views
0

ODataを呼び出すときにクライアントでNULL(404 Not Found)を処理する方法がわかりません。指定されたエンティティの関数。 「Context.Objects.ByKey(1).SomeFunction()。GetValueメソッド()」
ようODataサービス4.xを使用するMicrosoft OData Client 6.xは、クライアントでNULL戻り値(404 Not Found)を処理します。

例>サービス呼び出し私はサービスから「NULL」を取得したいが、代わりにクライアント上でそれが見つかりません404をスローします例外。

"NULL"を返すようにサービスを変更すると、サーバーでシリアル化例外が発生し、サーバーに "OK(null)"を返すように指示すると、シリアル化例外も発生します。ここで

はコントローラ

[HttpGet] 
public IHttpActionResult SomeFunction([FromODataUri] int key) 
{ 
    string something = null; 

    // Do some check and adjust the variable "something" 

    if (string.IsNullOrWhiteSpace(something)) 
    { 
     return NotFound(); 
    } 
    else 
    { 
     return Ok(something); 
    } 
} 

そして、ここでのサーバーコードがWebApiConfigコード

builder.EntityType<SomeObject>().Function("SomeFunction").Returns<string>(); 

である私からNULL値を処理する「正しい」方法を見つけるように見えることはできませんMicrosoft ODataクライアントを使用する場合のodataサービス。

多分、私はクライアントの "ReceivingResponse"イベントに接続して、404 Not Foundのいくつかの方法を処理できますか?任意の提案...

答えて

0

ODataクライアントのデフォルトの動作は、ODataサービスが404 File Not Foundを返すときに例外をスローすることです。

この問題を回避するには、ODataクライアント生成コードの "IgnoreResourceNotFoundException"というプロパティがあります。
このプロパティをtrueに設定し、例外をスローしません。

関連する問題