是有一个很好的策略,以记录用户的活动ASP软应用程序?(ActionFilters/HTTPModules).

什么样的最后用户活动(就像计算器"看到23分钟前"),并甚至是什么页和控制器被使用,并推动更进一步什么按钮或链接的点击。

我ELMAH安装,但因为我知道它只是错误记录。

PD:谷歌的分析不是一个选项。

有帮助吗?

解决方案

您可以尝试使用 PostSharp 方面进行日志记录对你来说,它的多播功能可能派上用场了类似的东西。如果它不是一个选项,然后一个模块很可能是最容易实现的(假定你可以在流水线点所需要的用户信息)。

其他提示

  

警告:本写于2009年的MVC .NET RC1,可能不是语法正确了。

动作过滤器属性非常适合这一点,只是把一个电话,在控制器的顶部[YourAttributeName](或者如果你有一个应用程序控制器,你的其他控制器继承,你只需要一次在你的应用程序)。

例如:

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

从这时开始每个动作都在你的控制(S)运行之前,此属性将被调用,你也可以通过相同的方式调用[Log]之前它指定该上只是一个动作。

要得到你需要的日志记录功能,您将最有可能要重写OnResultExecutingOnResultExecuted,这两者都是非常自我解释。

例如:

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.
    }
}

我只是无意中发现了这2个员额 里翁*威廉姆斯 描述一个非常直接的方式这样做:

实施审计线索使用ASP.NET 视ActionFilters

创造先进的审计跟踪使用ActionFilters在ASP.NET 视

高级职位真是太好了因为你可以储存的请求的数据和进一步的筛选数据。

我会实现这项权利现在在我的应用程序。

@ Rory的想法是外观极好。 PostSharp正是您需要什么,这一点,你可能会考虑使用 ASP.net偶联,健康监测

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top