Postsharp OnException Aspect不按预期工作

时间:2014-05-21 10:58:34

标签: c# .net postsharp

我有以下自定义方面,并尝试在项目和类级别应用它。在所有情况下,即使故意除以零,也不会调用OnException方法。我做错了什么?

[Serializable]
public class AutoLogExceptionsAspect : OnExceptionAspect
{
  public override void OnException(MethodExecutionArgs args)
  {
    AutoLogExceptionEventSource.Log.AutoLogException(args.Exception.GetType().Name, args.Exception.Message, args.Exception.StackTrace);
    args.FlowBehavior = FlowBehavior.Continue;
  }

  public override Type GetExceptionType(MethodBase targetMethod)
  {
    return typeof(Exception);
  }
}

我在课堂上尝试过这种装饰:

[AutoLogExceptionsAspect]
public partial class App : Application

和项目中的这个:

[assembly: AutoLogExceptionsAspect]

2 个答案:

答案 0 :(得分:1)

恕我直言AutoLogExceptionsAspect与onexception方面无关(或至少不是强制性的)。

通常在未调用Exception(或其他“方法”方面属性)时,这是因为在PostSharp调用时构建链中存在问题。

请确保Postsharp是否在构建计算机上启动并运行,并且在项目属性中启用了Postsharp(例如,在需要处理PostSharp的程序集的属性中没有“SkipPostSharp”开关)。如果不是属性将不会被执行。

答案 1 :(得分:0)

如果Postsharp许可证无效或已过期,它会在您的课程中跳过OnException方法。使用有效的许可证号更新Postsharp解决了我的问题。