【发布时间】:2015-03-30 08:40:09
【问题描述】:
我以这种方式配置了我的统一依赖项:
<register type="IFeedController" mapTo="RaF.Controllers.FeedController, Raf">
<interceptor type="VirtualMethodInterceptor"></interceptor>
<interceptionBehavior type="Microsoft.Practices.Unity.InterceptionExtension.PolicyInjectionBehavior, Microsoft.Practices.Unity.Interception" />
</register>
我已经这样设置了异常管理器:
public class ApplicationExceptionManager : IApplicationExceptionManager
{
private Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionManager _exceptionManager;
/// <summary>
/// Gets EntLibs Exception Manager instance
/// </summary>
public ExceptionManager ExceptionManager
{
get { return _exceptionManager; }
}
public ApplicationExceptionManager()
{
var exceptionHandlingPolicies = new List<ExceptionPolicyDefinition>();
var azureExceptionPolicies = ExceptionPolicies.AzureExceptionPolicies;
var systemExceptionPolicies = ExceptionPolicies.SystemExceptionPolicies;
var webAppExceptionPolicies = ExceptionPolicies.WebAppExceptionPolicies;
exceptionHandlingPolicies.Add(new ExceptionPolicyDefinition(ExceptionPolicies.AzureExceptionPolicy, azureExceptionPolicies));
exceptionHandlingPolicies.Add(new ExceptionPolicyDefinition(ExceptionPolicies.SystemExceptionPolicy, systemExceptionPolicies));
exceptionHandlingPolicies.Add(new ExceptionPolicyDefinition(ExceptionPolicies.WebAppExceptionPolicy, webAppExceptionPolicies));
_exceptionManager = new Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionManager(exceptionHandlingPolicies);
}
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionManager IApplicationExceptionManager.ExceptionManager
{
get { return _exceptionManager; }
}
}
然后我使用以下方法设置异常管理器:
ExceptionManager manager = new ApplicationExceptionManager().ExceptionManager;
ExceptionPolicy.SetExceptionManager(manager, true);
这将允许我在我的控制器和依赖项上使用ExceptionCallHandlerAttribute。
不幸的是,声明的处理程序永远不会触发,我迷失在事情出错的地方。这是一个简单的 ASP.NET MVC WebApi 控制器项目,使用 Unity 作为 Dependency Resolver。
接下来我应该检查什么?我错过了什么吗?
【问题讨论】:
标签: c# asp.net-mvc exception-handling unity-container policy