我有以下自定义方面,并尝试在项目和类级别应用它.在所有情况下,即使故意除以零,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);
}
}
Run Code Online (Sandbox Code Playgroud)
我在课上尝试过这种装饰:
[AutoLogExceptionsAspect]
public partial class App : Application
Run Code Online (Sandbox Code Playgroud)
这一个项目:
[assembly: AutoLogExceptionsAspect]
Run Code Online (Sandbox Code Playgroud)
恕我直言,AutoLogExceptionsAspect 与 oneException 方面无关(或者至少不是强制性的)。
通常,当未调用 Exception(或其他“方法”方面属性)时,这是因为在 PostSharp 调用时构建链出现问题。
请确保 Postsharp 是否已在构建计算机上启动并运行,并且在项目属性中启用了 Postsharp(例如,需要处理 PostSharp 的程序集的属性中没有“SkipPostSharp”开关)。如果不是,属性将不会被执行。