我在我的项目中使用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