2011-12-14 17 views
5

Witam Potrzebuję porady.Gromadzenie statystyk na stronie mvc asp.net?

Potrzebuję sposobu na śledzenie aktywności użytkowników w mojej witrynie bez narzędzi innych firm (takich jak Google anayltics).

Tak więc w zasadzie każde żądanie, które przychodzi do mojej witryny, wymaga uruchomienia zadania asynchronicznego, które zbierałoby informacje o użytkowniku i zapisywało do DB. Jaki jest najlepszy sposób na zrobienie tego?

Próbowałem napisać async httphandler, ale nie mogłem dostać się do pracy. Jest trafiony wiele razy dla każdego żądania (dla wszystkich plików resourse takich jak css jpg ...).

+1

To dobrze mi służyło przez ostatnie 3 lata. http://codereview.stackexchange.com/questions/4659/optimizing-a-fire-and-forget-page-tracker Opublikowaliśmy, aby uzyskać niewielką pomoc, dzięki czemu jest ona szybsza, ale działa przez 3 lata z ponad 2 milionami wierszy do tej pory w tabeli. Byłoby więcej, ale od czasu do czasu przycieram. –

+0

Dzięki za informację Tim. Skończyło się na zastosowaniu niestandardowego filtru. Że zarejestrowałem się w pliku global.asax. – usermon

Odpowiedz

2

Obecnie używam log4net do zrobienia czegoś podobnego.

Ustawiłem log4net bardzo podobny do tego, co zrobił ten article. Następnie można utworzyć atrybut rejestratora, który dziedziczy ActionFilterAttribute, który można dołączyć do kontrolerów, ja osobiście mam kontroler podstawowy, do którego zastosowałem atrybut mojego rejestratora.

W twoim atrybucie nadpiszesz OnActionExecuting i zapiszesz wszystkie informacje o aktualnie wykonywanej akcji w twoim loggerze log4, który chcesz. Po prostu upewnij się, że umieściłeś base.OnActionExecuting (filtercontext), nie chcesz zepsuć żadnej z hydrauliki mvc, po prostu podłączasz się do niej w punkcie do robienia logów.

Powiązane problemy