2013-05-06 72 views
2

我有一個頁面正在執行jQuery Ajax調用WebMethod在我的一個ASPX頁面。在某些情況下,我的WebMethod正在拋出一個帶有錯誤消息的異常。這個錯誤信息對用戶界面非常重要,因爲它告訴用戶怎麼說,所以他可以修復他的表單。從WebMethod獲取錯誤消息,同時保持Web.Config的安全

這在開發環境中工作正常。但是,在我的生產Web.Config中,我需要將customErrors設置爲「開」,所以我不會顯示重要信息。而且,我的IIS也覆蓋了HTTP 500錯誤。

我嘗試了ASMX的WebServices,它工作的很完美。 IIS不覆蓋我的HTTP 500,並且customErrors不隱藏WebService發送的消息。但是現在不可能將我所有的ASPX WebMethods遷移到ASMX文件。

我在尋找指導方針。我的UI如何獲得我的WebMethod的錯誤,同時保持我的Web.Config安全生產?

回答

1

您應該從不顯示用戶的死亡黃色屏幕。

相反,考慮實現一個Response對象,包含一個布爾成功,一個ErrorMessage(字符串)和實際的結果數據(如果需要的話)。

然後,您可以使用JavaScript回調並檢查該調用是否成功。如果沒有,只需提醒()錯誤消息。

+0

這就是我最終做的。但是我不喜歡這個解決方案,因爲即使有錯誤,服務器總是用Http 200響應。你知道使用http標準處理我的異常的方法嗎? – NLemay 2013-09-25 13:10:39

+1

500不是使用HTTP標準處理它的好方法,因爲這意味着內部錯誤。 如果你想用HTTP標準來處理它,請使用每個說的規範。如果錯誤來自客戶端(即:您使用jQuery發送數據並且此數據無效),則使用4XX狀態碼。 從此開始,您可以使用jQuery AJAX調用失敗的回調(例如,參見[this](http://api.jquery.com/jQuery.ajax/#example-3))。使用失敗的回調可以顯示一條消息,而不必顯示錯誤屏幕 – CharlesAD 2013-09-25 13:17:22

+1

儘管這是一個好方法,但使用WebMethods並不重要,因爲它們不是很RESTful。您應該檢查ASP.NET Web API,看看它們是否更符合您的需求(asmx /頁面方法正在變老) – CharlesAD 2013-09-25 13:19:34