是否有任何方法來捕獲和記錄從WCF服務的構造函數拋出的異常?由WCF服務構造函數拋出的日誌異常?
創建自定義IEndpointBehavior
與自定義IErrorHandler
似乎趕上所有例外除了在服務施工期間拋出。 (請糾正我,如果我錯了。)
我可以從HTTP響應中看到,這種情況最終會生成System.ServiceModel.ServiceActivationException
,但如果我可以從原始異常中註銷詳細信息將會很有幫助。
是否有任何方法來捕獲和記錄從WCF服務的構造函數拋出的異常?由WCF服務構造函數拋出的日誌異常?
創建自定義IEndpointBehavior
與自定義IErrorHandler
似乎趕上所有例外除了在服務施工期間拋出。 (請糾正我,如果我錯了。)
我可以從HTTP響應中看到,這種情況最終會生成System.ServiceModel.ServiceActivationException
,但如果我可以從原始異常中註銷詳細信息將會很有幫助。
您將需要創建一個類來記錄異常,在構造函數中初始化它並在發生異常時調用它。下面是一個非常簡單的例子:
public class MyWcfService : IMyWcfService
{
private readonly IExceptionLogger_ exceptionLogger;
public MyWcfService()
{
// Initialize dependencies
_exceptionLogger = new ExceptionLogger();
try
{
// Code here that throws an exception
}
catch (Exception ex)
{
_exceptionLogger.LogException(ex);
}
} // end constructor
// Other methods here
} // end class
爲什麼會在構造函數中出現異常?你在構造函數中做什麼? – 2012-04-11 19:48:23
@KirkWoll我不知道。這就是爲什麼我要記錄它們。 – 2012-04-11 19:54:30
我問,因爲我沒有在我的構造函數中包含任何行爲。因此,對我來說,拋出異常是不可能的。我很驚訝你在構造函數中有行爲。另外,'ServiceActivationException'通常是由於配置錯誤。換句話說,這意味着你的設置被破壞了,而且通常不值得記錄。 – 2012-04-11 19:56:39