8
votes

Track User Activity / Actions pour un site Web ASP.NET MVC?

J'aimerais conserver un journal de chaque page de page pour tous les utilisateurs de mon application Web. Après avoir passé suffisamment de temps, j'utiliserai ensuite ce journal pour générer des rapports. Je voudrais que le mécanisme de journalisation soit un peu flexible car je n'aurais pas besoin de connecter toutes les demandes HTTP.

Un exemple d'utilisation est: une entreprise s'inscrit pour mon application Web et permet à 5 employés d'utiliser l'application. J'aimerais signaler que 3 employés ont utilisé la demande la semaine dernière. Ou montrer que 4 employés l'ont utilisé entre juin et août de l'année en cours.

J'utilise ASP.NET MVC avec SQL Server, si cela fait une différence.

est-il aussi simple que cela? Créez une table SQL avec les colonnes suivantes: userid, nom de commande, actionName, actionparamètres, créatedon. Ensuite, créez un actefilterattribute qui ajoute un enregistrement à la DB pour chaque action invoquée.

Y a-t-il des pièges que je devrais m'inquiéter (autre qu'une taille de table potentiellement grande)?


2 commentaires

Peut-être qu'une solution plus évolutive consiste à utiliser Google Analytics et à suivre "URL virtuelles" que je pouvais analyser. Comme / rapports / / / / . Après cela, utilisez leur API d'alimentation de données et analysez la réponse


Non sécurisé et les utilisateurs peuvent éteindre JS ou Block GA.


3 Réponses :


6
votes

Certains des pièges:

  1. Vous ne pourrez pas faire de mise en cache de page de niveau de serveur.
  2. Beaucoup de db écrit depuis que vous êtes en vigueur à la journalisation de chaque demande.
  3. S'il y a des actions qui se produisent sur des pages, vous pouvez stocker des informations rédutruantes.

    Je suppose que vous pourriez implémenter cela dans un type d'autorisateur personnalisé, de sorte que vous ne le codez pas sur chaque contrôleur, mais il sera à la lettre de chaque demande qui serait éventuellement plus que ce dont vous avez réellement besoin.

    Avez-vous envisagé d'utiliser un type d'utilitaire d'analyse de journal IIS? Il aurait beaucoup d'informations dont vous avez déjà besoin.


0 commentaires

0
votes

Regardez l'interface IacctionFilter - vous pouvez écrire votre propre classe qui implémente cela et enregistrer tout ce que vous devez.


0 commentaires

2
votes

Une autre option si vous êtes prêt à utiliser JavaScript, vous pouvez mettre en œuvre quelque chose dans le sens de SiteCatalyste. Vous envoyez une demande en utilisant JavaScript à partir du client à la page Load à une action du contrôleur avec les informations appropriées de l'URL. Par exemple:

www.example.com \ AnalyticsController \ Action \ CurrentController \ Courant \ Nom d'utilisateur

L'avantage est que votre journalisation n'est pas exécutée en séquence avec toutes vos autres opérations et que vous pouvez probablement le faire fonctionner en mettant l'appel Ajax dans la page maître.

L'inconvénient est qu'il utilise JavaScript qui, comme indiqué, pourrait être désactivé. Il serait également vraiment facile de faire partie de la spoof.


0 commentaires