后置OnException方面没有按预期工作

本文关键字:工作 OnException 方面没 后置 | 更新日期: 2023-09-27 18:04:19

我有以下自定义方面,并尝试在项目和类级别应用它。在所有情况下,即使有意除以0,也永远不会调用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]

后置OnException方面没有按预期工作

IMHO autoologexceptionsaspect与异常方面无关(或者至少不是强制性的)。

通常当Exception(或其他"方法"方面属性)没有被调用时,这是因为在PostSharp调用时构建链中存在问题。

请确定Postsharp是否在构建机器上启动并运行,并且Postsharp在项目属性中启用(例如,在需要处理Postsharp的程序集属性中没有"SkipPostSharp"开关)。

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