我有一个带有一个依赖的简单控制器
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构造函数中捕获代码并以某种方式记录它,但为什么在解析器之后忽略此异常。