2017-02-25 5 views
0

私は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. :はい、私はきれいにして(何百万回のように)再構築しようとしました。

+0

ASP.NET MVCでカスタムフィルタを使用する前に、それをFilterConfigクラスに登録する必要があります。この記事の[Filters in MVC](http://www.tutorialsteacher.com/mvc/filters-in-asp) net-mvc)では、ASP.NET MVCでカスタムフィルタを作成、登録、使用する方法について説明しています。 –

+0

その標準的な属性クラスではありません、まず最初に試しましたが、それでも同じです。 postsharpは、自分のアクションの前にバイトコード属性onentryアクションを挿入する必要があります。 –

+0

ポストシャープがビルド時に実行されるかどうかを確認してください。 PostSharpからビルドログにメッセージがあるはずです。 PostSharp NuGetパッケージがプロジェクトに正常にインストールされましたか? * .csprojファイルには、PostSharp.targetsを参照するImport行があるはずです。 – AlexD

答えて

0

私は試してみた。プロジェクトでPostsharpを使用する場合は、Postsharp VS拡張を追加する必要があります。ポストシャープ拡張をインストールした後、ポストシャープ属性(またはカスタムポストシャープ属性)でクラスをターゲットにするために、ポストシャープポリシーにログオンしてチェックする必要があります。 ポストシャープは、急行版のための10の目標クラスを提供します。ポストシャーププロセスの出力をコンパイルした後、成功すればポストシャープでアスペクト属性をマークしたメソッドにILコードを注入します。 すべてのことが正しいとすれば、セッションやユーザーなどを得ることができます。回避策を取らずにすべてをログに記録することもできます。

そのすべてについてpostsharp VS Extension &ポリシー設定。

関連する問題