2017-03-14 4 views
0

私はRESTier 0.6.0ライブラリを使用しています。リソースを削除する前にいくつかチェックを行いたいと思います。チェックが失敗した場合は、削除操作を停止するために例外をスローします。ただし、例外をインスタンス化するために使用しているエラーメッセージは、最上位レベルにプッシュされていません。私はVisual StudioからWeb APIを提供する際に、内部例外としてのみメッセージを表示できます。このエラーメッセージを最高レベルに押し出す方法はありますか?RESTier Logicを送信し、エラーメッセージをトップレベルにプッシュ

{ 「エラー」:{ 「コード」:「」、 "メッセージ

protected void OnDeletingGw_Pack(Gw_Pack pack) 
{ 
    var trades = ModelContext.Gw_PackJunction.Where(e => e.PackID == pack.PackID).ToList(); 

    if (pack.Groupage == true || trades.Count > 1) 
    { 
      // Don't delete a pack if it is a groupage container or if it's associated with more than one Trade. 
      throw new Exception("The container you are trying to delete is either marked as groupage or is functioning as a groupage container in another file."); 
    } 
} 

現在OnDelete以内にスローされた例外は、このようになりますエラーでEntityFrameworkApi結果のロジック・メソッドを提出します":"エラーが発生しました。" } }

...これは、クライアントにとって特に有用ではありません。

更新:RESTierのドキュメントMkDocs versionには、(例外ではなく)ODataExceptionがスローされた例が挙げられました。これを私のコードで変更しましたが、発行されたRestierサービスによって返されたエラーオブジェクトには基本的な "エラーが発生しました"という情報しか残っていません。

お寄せいただきありがとうございます!

答えて

0

RESTier EntityFrameworkApi(内部およびOnUpdate<EntitySet>メソッドなど)内で例外をスローすると、例外は内部例外(内部例外)の一部として直列化復元されます。だから、RESTierのAPIの中にスローされた例外を表示するためには、人はする必要があります...

は、このようなHttpConfiguration クラスにIncludeErrorDetailPolicyプロパティを設定します。

config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always 

Structure of error received by client

この投稿を見る:OData controller returns different error for local and different for remote machine

関連する問題