【问题标题】:Anyone have any suggestions on how I can do server side web tracking with MVC?有人对我如何使用 MVC 进行服务器端 Web 跟踪有任何建议吗?
【发布时间】:2011-09-17 07:13:36
【问题描述】:

我想为我的 MVC 应用程序放置一些非常基本的网络跟踪。我想在服务器端执行此操作,我想知道是否有人对我可以用来帮助我解决此问题的一些简单类有任何了解。

我想跟踪以下内容:用户的 IP 地址、他们请求的页面、他们来自哪个国家以及日期时间戳。

【问题讨论】:

  • 您要跟踪什么?错误?服务电话?你是说追踪吗?需要更多关于此的信息
  • 对不起,我没有添加足够的信息。我想跟踪的是页面请求。跟踪请求的页面和请求的国家/地区以及日期。

标签: asp.net-mvc


【解决方案1】:

是的,你可以在控制器中为每个请求截取这个:

如果你想要用户请求的页面:

Request.RawUrl //Gives the current and complete URL the user requested

如果你想要它被请求的国家,你可以得到用户的IP地址和then use a ready-made function to look up where it's from

Request.UserHostAddress

还可以获取用户传入的所有路由值;以更全面地了解他们如何到达他们所在的位置。

public class MyController : Controller
{
    public ActionResult Home()
    {
        var userIP = Request.UserHostAddress;
        var requestedUrl = Request.UserHostAddress;
        var routeValues = this.ControllerContext.RouteData.Route.GetRouteData(HttpContext);
        var requestedDateTime = DateTime.Now;
    }
}

现在,你必须在每个动作上都加上这个,这看起来很傻,所以why not have this happen for everything that's executed?

protected virtual void OnActionExecuting(
    ActionExecutingContext filterContext)
{
    var userIP = filterContext.HttpContext.Request.UserHostAddress;
    var requestedUrl = filterContext.HttpContext.Request.UserHostAddress;
    var routeData = ((MvcHandler)filterContext.HttpContext.CurrentHandler).RequestContext.RouteData.Route.GetRouteData(filterContext.HttpContext);
    var requestedDateTime = DateTime.Now;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    相关资源
    最近更新 更多