私はMVCプロジェクトで簡単なAOPアプローチをしようとしています。ポストシャープエクスプレス版とパケットをインストールしました。私は2つのプロジェクトを持っている、最初にアスペクトモジュールと2番目のカジュアルなmvcプロジェクトです。 AOPポストシャープ - アスペクト属性が機能しない
は、だから私は[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);
}
}
提供postsharp局面にカスタムログ属性を作成し、これは私にHomeController
[Log]
public class HomeController : Controller
{
public HomeController()
{
}
public ActionResult Index()
{
Debug.WriteLine("start");
return View();
}
}
Postsharp文書かなり明確であるが、私の属性は、任意の方法を打つことはありません。私はさまざまな属性の使用法などを試しましたが、何も起こりません。 私はまた、Log属性の有無にかかわらず私のコントローラのILコードを検査しようとしました。実際にはpostsharpの属性から来る追加のコードはないようです。 P.P. :はい、私はきれいにして(何百万回のように)再構築しようとしました。
ASP.NET MVCでカスタムフィルタを使用する前に、それをFilterConfigクラスに登録する必要があります。この記事の[Filters in MVC](http://www.tutorialsteacher.com/mvc/filters-in-asp) net-mvc)では、ASP.NET MVCでカスタムフィルタを作成、登録、使用する方法について説明しています。 –
その標準的な属性クラスではありません、まず最初に試しましたが、それでも同じです。 postsharpは、自分のアクションの前にバイトコード属性onentryアクションを挿入する必要があります。 –
ポストシャープがビルド時に実行されるかどうかを確認してください。 PostSharpからビルドログにメッセージがあるはずです。 PostSharp NuGetパッケージがプロジェクトに正常にインストールされましたか? * .csprojファイルには、PostSharp.targetsを参照するImport行があるはずです。 – AlexD