Frage

Gibt es eine gute Strategie, um die Benutzeraktivität auf einem ASP-MVC-App anmelden? (ActionFilters / Httpmodules).

So etwas wie letzte Benutzeraktivität (wie Stackoverflow „gesehen 23 Minuten vor“), und auch das, was von Seiten und Controller verwendet wurden, und drückt weiter, welche Knöpfe oder Links angeklickt wurden.

Ich habe ELMAH installiert, aber soweit ich weiß, es ist nur für die Fehlerprotokollierung.

PD: Google Analytics ist keine Option

.
War es hilfreich?

Lösung

Sie könnten versuchen, mit einem Postsharp Aspekt die Protokollierung für Sie ausführen, ist es Multi-Cast-Funktionalität könnte kommen in praktisch für so etwas. Wenn es keine Option ist, dann würde ein Modul wahrscheinlich die am einfachsten zu implementieren (vorausgesetzt, können Sie die gewünschten Benutzerinformationen an diesem Punkt in der Pipeline erhalten).

Andere Tipps

  

. Achtung: Dieses wurde im Jahr 2009 für MVC .NET RC1 geschrieben und kann nicht syntaktisch korrekt sein mehr

Aktion Filterattribute sind perfekt für diese, gerade einen Anruf setzen an der Spitze des Controllers [YourAttributeName] (oder, wenn Sie einen Application Controller haben, die Ihre anderen Controller erben von, Sie es brauchen einmal in Ihrer Anwendung).

Zum Beispiel:

namespace the_name_space
{
    [Log]
    public class ApplicationController : Controller
    {

Von diesem Punkt an wird dieses Attribut aufgerufen werden, bevor jede Aktion in Ihrem Controller ausgeführt wird (s), können Sie auch diese angeben, auf nur eine Aktion von [Log] Aufruf, kurz bevor es auf die gleiche Art und Weise.

die Logging-Funktionalität zu erhalten, die Sie benötigen, werden Sie wahrscheinlich wollen OnResultExecuting und OnResultExecuted außer Kraft zu setzen, von denen beide erklärend ziemlich selbst sind.

Zum Beispiel:

public class LogAttribute : ActionFilterAttribute
{
    protected DateTime start_time;

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        start_time = DateTime.Now;
    }

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        RouteData route_data = filterContext.RouteData;
        TimeSpan duration = (DateTime.Now - start_time);
        string controller = (string)route_data.Values["controller"];
        string action = (string)route_data.Values["action"];
        DateTime created_at = DateTime.Now;
        //Save all your required values, including user id and whatnot here.
        //The duration variable will allow you to see expensive page loads on the controller, this can be useful when clients complain about something being slow.
    }
}

Ich stolperte über diese 2 Beiträge Rion Williams , die eine sehr einfache Art und Weise, dies zu tun beschreiben:

Implementierung Audit Trails mit ASP.NET MVC ActionFilters

Erstellen von erweiterten Audit Trails mit ActionFilters in ASP.NET MVC

Der Vorposten ist wirklich toll, wie Sie die Daten der Anfrage speichern und weitere Filter, die Daten.

Ich werde dieses Recht umsetzen jetzt in meiner app.

@ Rorys Idee ist ausgezeichnet. Postsharp ist genau das, was Sie dafür brauchen, könnten Sie koppeln sie betrachten mit ASP.net Health Monitoring

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top