我在我的項目中使用IErrorHandler
處理異常。WCF錯誤處理程序異常記錄
但我如何記錄傳入的方法參數,例外。 我想獲取用於記錄的請求參數。
抽樣方法:
public Response GetData(Request request) {
return new Response();
}
我在我的項目中使用IErrorHandler
處理異常。WCF錯誤處理程序異常記錄
但我如何記錄傳入的方法參數,例外。 我想獲取用於記錄的請求參數。
抽樣方法:
public Response GetData(Request request) {
return new Response();
}
兩種方式:
本機WCF記錄器將捕獲所有請求&響應設置然而,長篇大論的時候,這些文件往往會得到真正的大,真正的快。
使用log4net的(搜索谷歌下載)
私人靜態只讀ILog的日誌= LogManager.GetLogger(typeof運算(MyClass的));
public class MyClass
{ ...
public Foo DoSomething(string arg)
{
try
{
//do something
}
catch(Exception e)
{
log.error(string.format("{0} Arguements: {1}", e.Tostring(), arg);
}
}
}
你可以得到這樣的請求消息:
Message requestMessage = OperationContext.Current.RequestContext.RequestMessage;
我最常做的是記錄整個請求XML。
您在IErrorHandler
中沒有此類信息 - 您只能在ProvideFault
方法中解析原始消息。
你可以嘗試用另一種方法 - 實現自定義IOperationInvoker
和Invoke
方法做這樣的事情:
// Just synchronous implementation - for asynchronous handle InvokeBegin and InvokeEnd
public object Invoke(object instance, object[] inputs, out object[] outputs)
{
try
{
// Run common invoker - you will create new Invoker as decorator for existing one.
return innerInvoker.Invoke(instance, inputs, outputs);
}
catch(Exception e)
{
// Handle error here
}
}
操作調用負責服務選擇正確的操作和ivoke它。這只是想法 - 我沒有測試過它。
這不會回答如何在實現IErrorHandler來處理異常的類中記錄請求。 – 2014-12-02 17:46:18