我在项目中使用IErrorHandler
来处理异常。
但是我怎么能用异常记录传入的方法参数。 我想获取用于记录的Request参数。
样本方法:
public Response GetData(Request request) {
return new Response();
}
答案 0 :(得分:4)
您可以收到如下请求消息:
Message requestMessage = OperationContext.Current.RequestContext.RequestMessage;
我通常做的是记录整个请求XML。
答案 1 :(得分:0)
两种方式:
本机WCF记录器将捕获所有请求&但是,当设置为详细时,这些文件往往变得非常快,真正快速。
使用log4net(搜索谷歌下载)
private static readonly ILog log = 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);
}
}
}
答案 2 :(得分:0)
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
}
}
操作调用程序负责选择正确的服务操作并将其调用。这只是想法 - 我还没有测试过它。