2011-10-17 49 views
3

我有一個WCF REST項目,我想捕獲WCF框架拋出並以我的方式顯示它們的錯誤(即JSON)。WCF - 如何製作自定義錯誤?

例如,如果我期待在我的調用中有一個int參數,並且我得到一個字符串,框架將顯示一個頁面,其中包含「請求錯誤」和一些跟蹤信息......我只想獲得異常並以我的JSON格式顯示它作爲對用戶的響應。

只是爲了讓這個更清楚 - 我不想看到一個異常IN CODE,但是發生在代碼之外的異常。這是WCF自己生成的一個例外,例如(當我將字符串傳入int字段時)

服務器在處理請求時遇到錯誤。請參閱服務幫助頁面以構建對服務的有效請求。異常消息是'輸入字符串格式不正確'。查看服務器日誌獲取更多詳細信異常堆棧跟蹤是:...

任何想法如何做到這一點?

非常感謝提前!

+0

我不明白......你問如何捕捉異常,或者如何在ASP中顯示「漂亮」的錯誤頁面?請更好地標記你的問題。 – qJake

+0

你說得對。我已經添加了一些更多的解釋 – Roman

+0

異常通過WCF傳遞......如果您在WCF服務中引發異常,則可以在客戶端代碼中捕獲異常。我仍然不明白這裏的問題是什麼。 – qJake

回答

1

您需要使用FaultContracts來生成您自己的自定義錯誤。需要一點時間來設置,但一旦擁有它,它就會產生奇蹟。關於它的好處是FaultContract是完全可序列化的。

[OperationContract] 
[FaultContract(typeof(CustomFault))] 
string WillThrowArgumentException(); 

這是一個很好的解釋,讓它工作。
http://blog.ngommans.ca/index.php?/archives/33-Handling-custom-errors-in-WCF.html

+0

謝謝。非常適合! – Roman

0

這聽起來像你正在尋找實現全局誤差在WCF服務處理,這樣你就可以趕上未處理的異常(在你的代碼你的控制範圍之外的任何一個意外的錯誤或東西)。如果我的理解是正確的,你會想看看IErrorHandler Interface

有很多關於如何阻止IErrorHandler的博客文章和文章。以下是一個涵蓋SOAP和REST的文章:WCF Exception Handling with IErrorHandler

+0

謝謝 - 我會去的:)你真的幫助過! – Roman