Ich versuche, einfache AOP-Ansatz mit MVC-Projekt. Installierte Postharp Express Edition und Pakete. Ich habe 2 Projekt, zuerst ist Aspektmodul und Sekunde ist lässiges mvc Projekt.AOP Postsharp - Aspect Attribute funktioniert nicht
Also habe ich eine benutzerdefinierte Protokollattribut mit Aspekt,
[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);
}
}
und das ist mein Homecontroller
[Log]
public class HomeController : Controller
{
public HomeController()
{
}
public ActionResult Index()
{
Debug.WriteLine("start");
return View();
}
}
Postsharp Dokumente ziemlich klar, aber mein Attribut traf nie ein Verfahren zur Verfügung gestellt Postsharp. Ich habe versucht, verschiedene Attribute zu verwenden und andere Dinge, aber immer noch passiert nichts. Ich habe auch versucht, IL-Code meines Controllers mit und ohne Log-Attribut zu überprüfen. Tatsächlich scheint es, dass kein zusätzlicher Code vom Attribut mit Postsharp kommt. P.S. : Ja, ich habe versucht, sauber und wieder aufzubauen (wie Millionen mal).
Bevor Sie beginnen, Ihre benutzerdefinierten Filter in ASP.NET MVC zu verwenden, sollten Sie sie in der FilterConfig-Klasse registrieren. Dieser Artikel [Filtert in MVC] (http://www.tutorialstreacher.com/mvc/filters-in-asp. net-mvc) beschreibt, wie Sie Ihren benutzerdefinierten Filter in ASP.NET MVC erstellen, registrieren und verwenden. –
es ist kein Standard-Attribut-Klasse thou, BTW zuerst, was ich versuchte, aber immer noch gleich. postsharp muss vor den Aktionen inject byte code attribute onentry sein. Ich überprüfe meinen Byte Code nichts ändere nach dem Hinzufügen –
Bitte überprüfen Sie zuerst, ob PostSharp während der Build-Zeit läuft. Im Build-Protokoll sollte eine Nachricht von PostSharp erscheinen. Wurde das PostSharp NuGet-Paket erfolgreich in Ihrem Projekt installiert? In der * .csproj-Datei sollte eine Import-Zeile stehen, die auf PostSharp.targets verweist. – AlexD