解析控制器时从Facade构造函数中获取异常

时间:2018-01-22 12:14:00

标签: c# asp.net-web-api controller unity-container facade

我有一个带有一个依赖的简单控制器

public TestController(ITestFacade testFacade)
{
    _testFacade = testFacade;
}

和简单的外观

public class TestFacade : ITestFacade
{
    public TestFacade()
    {
        throw new Exception("Test");
    }
}

我有Unity解析器和注册

public static void RegisterDependencies(IUnityContainer container)
{
    container.RegisterType<ITestFacade, TestFacade>();
}

UnityResolver在各处都很常见。没什么习惯的。

public object GetService(Type serviceType)
{
    try
    {
        return _container.Resolve(serviceType);
    }
    catch (ResolutionFailedException)
    {
        // Here in one of Inner Exceptions is my Facade exception, but I want to get it later

        return null;
    }
}

请将此视为测试方案。构造函数中的Facade应该因任何原因而失败。现在不重要了。

运行应用程序导致异常:

An error occurred when trying to create a controller of type 'TestController'. Make sure that the controller has a parameterless public constructor.

好的,这是因为当解析器无法获取控制器中的实例和激活器失败时,Facade的构造函数出错。

我的问题是 - 有什么方法可以在IHttpControllerActivator或其他地方捕获此异常? 我可以尝试在Facade构造函数中捕获代码并以某种方式记录它,但为什么在解析器之后忽略此异常。

0 个答案:

没有答案