2017-03-14 49 views
0

我正在使用RESTier 0.6.0庫,並且希望在刪除它之前對資源執行一些檢查。在檢查失敗的情況下,我拋出異常來停止刪除操作。但是,我用來實例化異常的錯誤消息並未在最高級別推出。從Visual Studio提供Web API時,我只能將該消息視爲內部異常。有沒有辦法讓這個錯誤消息在最高級別推出?RESTier提交邏輯,將錯誤消息推送到頂層

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(而不是Exception)的情況下給出了一個示例。我在我的代碼中對此進行了更改,但發佈的Restier服務返回的錯誤對象仍然只有基本的「發生錯誤」信息。

非常感謝幫助!

回答

0

在RESTier EntityFrameworkApi(例如內部和OnUpdate<EntitySet>方法)內引發異常時,該異常作爲內部異常(internalexception)的一部分被反序列化。因此,爲了查看RESTier API中拋出的異常,需要...

設置IncludeErrorDetailPolicy財產上的HttpConfiguration 類是這樣的:

config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always 

Structure of error received by client

看到這個職位:OData controller returns different error for local and different for remote machine