0
我正在通過代碼配置一個REST WCF服務,並且有些事情是不正確的。我用下面的代碼創建一個錯誤處理程序。WCF 3.5添加IErrorHandler不會被調用
當我運行我們的服務(自託管)時,當我拋出帶有未經授權狀態碼的WebFaultException時,ProvideFault代碼被擊中。問題是客戶端(瀏覽器)獲取「服務器在處理請求時遇到錯誤,請參閱服務器日誌以獲取更多詳細信息。」 任何想法我失蹤?另外,因爲我自己託管,所以沒有「服務器日誌」,所以基本上我完全處於黑暗中。無論如何要捕捉自己託管的服務中的「服務器日誌」?
注:WebFaultException是我們使用3.5以來編寫的WebFaultException。
public class WebErrorHandler : IErrorHandler
{
private IErrorHandler m_chainedHandler;
public WebErrorHandler(IErrorHandler chainedHandler)
{
m_chainedHandler = chainedHandler;
}
#region IErrorHandler Members
public bool HandleError(Exception error)
{
return m_chainedHandler.HandleError(error);
}
public void ProvideFault(Exception error, System.ServiceModel.Channels.MessageVersion version, ref System.ServiceModel.Channels.Message fault)
{
WebFaultException ex = error as WebFaultException;
if (ex != null)
{
fault = Message.CreateMessage(version, "");
HttpResponseMessageProperty p = new HttpResponseMessageProperty();
p.StatusCode = ex.Status;
p.StatusDescription = "Another test";
fault.Properties.Add(HttpResponseMessageProperty.Name, p);
}
else
{
m_chainedHandler.ProvideFault(error, version, ref fault);
}
}
#endregion
}
我改變了HandleError中的代碼,返回true,結果沒有任何變化。無論如何,我認爲HandleError會被調用。無論如何,這似乎是服務忽略了我在處理程序中創建的錯誤。 – bpeikes