我正在嘗試使用MVC項目簡單的AOP方法。安裝postharp express版本和數據包。我有2個項目,第一個是方面模塊,第二個是休閒mvc項目。AOP Postposers - Aspect attributes not working
所以我創建的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);
}
}
用方面的自定義日誌屬性,這是我的HomeController
[Log]
public class HomeController : Controller
{
public HomeController()
{
}
public ActionResult Index()
{
Debug.WriteLine("start");
return View();
}
}
Postsharp文件很清楚,但我的屬性從不打任何方法。我嘗試過各種屬性用法和其他東西,但仍然沒有任何反應。 我也嘗試檢查我的控制器的IL代碼有和沒有日誌屬性。實際上,似乎沒有來自postsharp屬性的額外代碼。 P.S. :是的,我嘗試了清理和重建(就像數百萬次)。
在開始在ASP.NET MVC中使用自定義過濾器之前,您應該在FilterConfig類中註冊它。本文[MVC中的過濾器](http://www.tutorialsteacher.com/mvc/filters-in-asp。 net-mvc)描述瞭如何在ASP.NET MVC中創建,註冊和使用自定義過濾器。 –
它不是一個標準的屬性類,順便說一句,我第一件事,但嘗試,但仍然相同。 postsharp必須在我的操作之前注入字節碼屬性onentry動作。我檢查我的字節代碼後沒有任何變化加入 –
請首先檢查PostSharp是否在構建時運行。在構建日誌中應該有來自PostSharp的消息。 PostSharp NuGet包是否已成功安裝到您的項目中?在* .csproj文件中應該有引用PostSharp.targets的Import行。 – AlexD