2011-03-24 31 views
0

如果存在反序列化問題/其他錯誤,我總是收到400錯誤請求。如果我嘗試通過在被調用的方法中設置斷點來進行調試,那麼如果存在反序列化問題,它不會受到影響。我如何攔截並調整迴應以給我更多細節。WCF Rest 4.0聯機模板中的錯誤處理

我看了一些關於webprotocolexception的文章,但我認爲WCF Rest在線模板和入門套件還是不一樣的。初學者工具包是否就像是模板的附加組件?

感謝您的時間。

回答

0

處理RESTful WCF服務中的異常很困難。反序列化問題是最糟糕的,因爲沒有用戶代碼被調用。該框架處理異常並簡單地向調用者返回錯誤。有一種方法可以查看這些錯誤。您必須配置WCF跟蹤(通過Web.config)。這裏的描述過程,以及在哪裏可以找到你的機器上跟蹤查看鏈接:

Service Trace Viewer Tool (SvcTraceViewer.exe)

不幸的是有沒有辦法來調整該行爲。但對於其他例外情況,您可以使用自定義IErrorHandler實現自定義HttpBehavior(或HttpBehavior2,如果您使用的是REST入門工具包)來處理例外情況。

0

錯誤400意味着錯誤的請求=>它在WCF級被拾取,甚至沒有達到該方法。所以你需要看看請求,如果你傳遞JSON,很可能它的格式不正確。

我有一個我在WCF REST中實現的個人項目,不得不與這個很令人沮喪的錯誤作鬥爭。由於無法返回文本內容,因此服務器上的錯誤處理和向客戶端返回錯誤代碼也很殘酷,我所擁有的僅僅是HTTP錯誤代碼和錯誤描述(HTTP響應中的第一行)。 I 將永遠不會再使用WCF REST,因爲它是一個可執行的實現。

+0

謝謝,我不清楚這意味着什麼 - '它在WCF級別被採集,甚至沒有達到該方法。'我認爲在發送到服務之前清理請求可能不是一種選擇,因爲服務的使用者需要這樣做,這可能發生也可能不發生。我在這裏提到的任何請求截取行的東西 - http://msdn.microsoft.com/en-us/library/ee391967.aspx。即使我不確定是否繼續使用wcf休息在線模板是一個好主意,思考asp.net mvc休息服務。 – StudentForever 2011-03-24 15:08:48

+0

這意味着請求被認爲是格式不正確的,並且不會在服務中觸發您的方法。如果你向我顯示你的請求和服務接口聲明,我應該能夠告訴你什麼是錯的。 – Aliostad 2011-03-24 15:48:49