AOP Postsharp - 方面属性不起作用
AOP Postsharp - Aspect attributes not working
我正在尝试对 MVC 项目使用简单的 AOP 方法。安装 postharp 快速版和数据包。我有 2 个项目,第一个是 aspect 模块,第二个是 casual mvc 项目。
所以我使用 postsharp 提供的方面创建了一个自定义日志属性
[Serializable]
public class LogAttribute : OnMethodBoundaryAspect
{
public LogAttribute()
{
}
public override void OnEntry(MethodExecutionArgs args)
{
Log.Instance.Info(args.Arguments[0]);
base.OnEntry(args);
}
public override void OnExit(MethodExecutionArgs args)
{
Log.Instance.Info(args.Arguments[0]);
base.OnExit(args);
}
public override void OnException(MethodExecutionArgs args)
{
Log.Instance.Error(args.Exception,args.Method.Name);
base.OnException(args);
}
}
这是我的家庭控制器
[Log]
public class HomeController : Controller
{
public HomeController()
{
}
public ActionResult Index( )
{
Debug.WriteLine("start");
return View();
}
}
Postsharp 文档非常清楚,但我的属性从未命中任何方法。我尝试了各种属性用法和其他方法,但仍然没有任何反应。
我还尝试检查带有和不带 Log 属性的控制器的 IL 代码。实际上,似乎没有来自带有 postsharp 的属性的附加代码。
P.S。 : 是的,我试过清理和重建(大约数百万次)。
经过努力我想通了。当我们要在我们的项目中使用 Postsharp 时,我们必须添加 Postsharp VS 扩展。安装 postsharp 扩展后,我们必须登录并检查我们的 postsharp 策略以使用 postsharp 属性(或自定义派生的 postsharp 属性)来定位我们的 classes。
Postsharp 为速成版提供了 10 个目标 class。编译后检查 postsharp 过程的输出,如果成功,postsharp 将 IL 代码注入我们用方面属性标记的方法。
如果我们做的一切都正确,我们可以获得会话、用户等一切都可以记录下来,没有任何变通方法也提供了非常简单的缓存机制。
全部关于 postsharp VS 扩展和策略设置。
我正在尝试对 MVC 项目使用简单的 AOP 方法。安装 postharp 快速版和数据包。我有 2 个项目,第一个是 aspect 模块,第二个是 casual mvc 项目。
所以我使用 postsharp 提供的方面创建了一个自定义日志属性
[Serializable]
public class LogAttribute : OnMethodBoundaryAspect
{
public LogAttribute()
{
}
public override void OnEntry(MethodExecutionArgs args)
{
Log.Instance.Info(args.Arguments[0]);
base.OnEntry(args);
}
public override void OnExit(MethodExecutionArgs args)
{
Log.Instance.Info(args.Arguments[0]);
base.OnExit(args);
}
public override void OnException(MethodExecutionArgs args)
{
Log.Instance.Error(args.Exception,args.Method.Name);
base.OnException(args);
}
}
这是我的家庭控制器
[Log]
public class HomeController : Controller
{
public HomeController()
{
}
public ActionResult Index( )
{
Debug.WriteLine("start");
return View();
}
}
Postsharp 文档非常清楚,但我的属性从未命中任何方法。我尝试了各种属性用法和其他方法,但仍然没有任何反应。 我还尝试检查带有和不带 Log 属性的控制器的 IL 代码。实际上,似乎没有来自带有 postsharp 的属性的附加代码。 P.S。 : 是的,我试过清理和重建(大约数百万次)。
经过努力我想通了。当我们要在我们的项目中使用 Postsharp 时,我们必须添加 Postsharp VS 扩展。安装 postsharp 扩展后,我们必须登录并检查我们的 postsharp 策略以使用 postsharp 属性(或自定义派生的 postsharp 属性)来定位我们的 classes。 Postsharp 为速成版提供了 10 个目标 class。编译后检查 postsharp 过程的输出,如果成功,postsharp 将 IL 代码注入我们用方面属性标记的方法。 如果我们做的一切都正确,我们可以获得会话、用户等一切都可以记录下来,没有任何变通方法也提供了非常简单的缓存机制。
全部关于 postsharp VS 扩展和策略设置。