2011-12-14 13 views
5

Ciao, ho bisogno di un consiglio.Raccolta di statistiche su un sito di asp.net mvc?

Ho bisogno di un modo per tenere traccia delle attività degli utenti sul mio sito, senza strumenti di terze parti (come google anayltics).

Quindi in pratica qualsiasi richiesta che viene al mio sito ho bisogno di generare un task asincrono che raccolga informazioni sull'utente e scriva sul DB. Qual'è il miglior modo per farlo?

Ho provato a scrivere un httphandler asincrono ma non sono riuscito a mettermi al lavoro. Viene colpito più volte per ogni richiesta (per tutti i file resourse come css jpg ...).

+1

Questo mi è servito bene negli ultimi 3 anni. http://codereview.stackexchange.com/questions/4659/optimizing-a-fire-and-forget-page-tracker che ho postato per ottenere un piccolo aiuto che lo rende più veloce, ma funziona da 3 anni con oltre 2 milioni di righe nel tavolo finora. Sarebbe di più ma io potare di volta in volta. –

+0

Grazie per le informazioni Tim. Ho finito per usare un filtro personalizzato. Che mi sono registrato nel file global.asax. – usermon

risposta

2

Attualmente sto utilizzando log4net per fare qualcosa di simile.

Ho impostato il mio log4net molto simile a ciò che ha fatto questo article. Dopo di che puoi creare un attributo logger che eredita l'ActionFilterAttribute che puoi allegare ai tuoi controller, io personalmente ho un controller di base a cui ho applicato il mio attributo logger.

Nel proprio attributo si esegue l'override di OnActionExecuting e si registrano tutte le informazioni sull'azione attualmente in esecuzione nel logger log4net che si desidera. Assicurati di includere base.OnActionExecuting (filtercontext) che non vuoi rovinare nessuno degli impianti idraulici mvc, ti stai solo agganciando a un certo punto per fare un po 'di logging.

Problemi correlati