在WCF服务实例创建期间处理异常

时间:2013-05-13 14:55:52

标签: c# wcf unity-container

我正在使用Unity.Wcf在服务类中注入依赖项,它工作正常。但是如果我错误地配置了我的依赖项,那么Unity会抛出异常,它无法构建我的服务实例,这是正确的。有谁知道我可以在哪里处理这个例外来记录它?检查日志要比每次调试都容易得多。

2 个答案:

答案 0 :(得分:2)

捕获异常的另一种方法是覆盖服务工厂中的CreateServiceHost方法。在try ... catch块中调用base.CreateServiceHost()并使用您选择的日志记录组件将异常保存到日志中。除了记录错误之外,行为将是相同的。

public override ServiceHostBase CreateServiceHost(string constructorString, Uri[] baseAddresses)
{
    try {
        return base.CreateServiceHost(constructorString, baseAddresses);
    }
    catch (Exception ex) {
        // log here
        throw;
    }
}

答案 1 :(得分:0)

经过一些调查后,我发现了如何创建实例,似乎没有办法轻松添加日志记录。它唯一的方法是更改​​Unity.Wcf的源代码或继承几个类并覆盖默认行为。对于那些感兴趣的人,逻辑如下:UnityServiceHostFactory创建UnityServiceHost,UnityServiceHost添加行为类UnityInstanceProvider,这个UnityInstanceProvider有一个GetInstance方法,可以创建服务并进行Unity解析。因此,要记录您需要执行以下操作之一:

  1. 将此类替换为您的类并继承UnityServiceHostFactory和UnityServiceHost
  2. 获取源代码并在此类中更改正确的内容(UnityInstanceProvider)。
相关问题