WCF:异步调用的操作调用程序中的全局错误处理

时间:2013-08-29 11:35:42

标签: c# wcf asynchronous error-handling asynchronous-wcf-call

我想为我的wcf服务进行全局错误处理。因此,我想实现自己的Operation Invoker。每个服务操作都具有从基本响应类型继承的响应类型。如果操作成功消息并且根据异常错误代码(在代码snipet中省略),则此基本响应类型具有标志。 同步调用的实现看起来就像下面的代码一样,但是如何为异步调用做同样的事情?

顺便说一下:你对这种方法有何看法?

public class ErrorHandlingOperationInvoker : IOperationInvoker
{
    private IOperationInvoker invoker;

    private ServiceDescription description;

    public ErrorHandlingLoggingOperationInvoker(IOperationInvoker baseInvoker, ServiceDescription serviceDescription)
    {
        this.invoker = baseInvoker;
        this.description = serviceDescription;
    }

    public object Invoke(object instance, object[] inputs, out object[] outputs)
    {
        try
        {
            result = this.invoker.Invoke(instance, inputs, out outputs);
        }
        catch (Exception exception)
        {
            BaseResponse response = (BaseResponse)Activator.CreateInstance(description.SyncMethod.ReturnType);
            response.error = true;
            response.errormessage = exception.message;
            return response;
        }
        return result;
    }

0 个答案:

没有答案