2012-12-13 23 views
0

我正在嘗試執行ToDo示例,並在嘗試併發處理時遇到了未處理的對話。併發/待辦事務示例不起作用

的dataservice.js包含saveFailed(error)方法,這些行:

if (detail && detail.ExceptionType.indexOf('OptimisticConcurrencyException') !== -1) { 
     // Concurrency error 
     reason = 
      "Another user, perhaps the server, may have deleted one or all of the todos."; 
     manager.rejectChanges(); // DEMO ONLY: discard all pending changes 
    } 

客戶從來沒有得到這一點由於未處理OptimisticConcurrencyException在:

[HttpPost] 
    public SaveResult SaveChanges(JObject saveBundle) { 
     return _contextProvider.SaveChanges(saveBundle); 
    } 

我試圖抓住這一點,返回異常,這是一種愚蠢的異常不是SaveResult類型。這是一個錯誤,或者我錯過了某個地方的配置?

電賀

回答

1

任何服務器端錯誤應該返回到promise.fail處理程序。即

em.saveChanges().then(function(saveResult) { 
    // normal path 

}).fail(function(error) { 
    // your concurrency exception message will be part of the error object. 
}); 
+0

這就是我想要做的,但我沒有得到這麼多。在Visual Studio中的調試模式中,執行被暫停,並且我得到一個窗口,其中'用戶代碼未處理的異常'。在我的測試服務器上,我得到(Fiddler)'500:{「$ id」:「1」,「$ type」:「System.Web.Http.HttpError,System.Web.Http」,「Message」:「An錯誤發生了。「}'沒有錯誤類型。這可能是一個配置錯誤,我不知道(Windows Server 2012)。我很感激任何建議。 –

+0

一個問題依然存在。在本地主機上調試時,我使用ExceptionMessage,ExceptionType和StackTrace獲取完整的JSON。在引發ConcurrentException時,將測試服務器上的項目部署爲測試服務器上的Release,從而爲我提供了上述註釋中的JSON。 –

0

錯誤在我這邊...在VS的異常窗口中單擊'繼續'JavaScript處理程序被執行。