Dot-Net
從 WCF REST 獲取錯誤詳細資訊
我有一個 .Net WCF 客戶端使用的 REST 服務。
當遇到錯誤時,REST 服務會返回一個 HTTP 400 錯誤請求,其響應正文包含 JSON 序列化詳細資訊。
如果我使用 Fiddler、Javascript 或直接從 C# 執行請求,我可以在發生錯誤時輕鬆訪問響應正文。
但是,我正在使用
ChannelFactory具有 6 個非常複雜的介面的 WCF。這個代理拋出的異常總是 aProtocolException,沒有有用的細節。當我收到此錯誤時,有什麼方法可以獲取響應正文?
更新
我意識到使用 .Net 有很多不同的方法可以做到這一點,並且還有其他方法可以獲得錯誤響應。他們很有用,但不回答這個問題。
我們正在使用的 REST 服務會發生變化,並且當它們發生變化時,複雜的介面會得到更新。與新介面一起使用
ChannelFactory意味著我們將獲得編譯時(而不是執行時)異常,並使這些更容易維護和更新程式碼。使用 WCF 通道時,有什麼方法可以獲取錯誤 HTTP 狀態的響應正文?
您可以檢索異常詳細資訊,如下所示:
Exception innerException = exception.InnerException; WebException webException = innerException as WebException; HttpWebResponse response = webException.Response as HttpWebResponse; string statusDescription = response.StatusDescription; HttpStatusCode statusCode = response.StatusCode;
的
InnerException將ProtocolException是一個WebException. 您可以從中獲取HttpWebResponse並呼叫GetResponseStream以讀取實際的響應正文。(記得在閱讀之前尋找到流的開頭)。var webException = (WebException) protocolException.InnerException; var response = (HttpWebResponse) webException.Response; var responseStream = response.GetResponseStream() responseStream.Seek(0, SeekOrigin.Begin); var reader = new StreamReader(responseStream); var responseContent = reader.ReadToEnd();