如何在Webmatrix/Razor/ASP.NET网页中捕获唯一的用户会话?

如何在Webmatrix/Razor/ASP.NET网页中捕获唯一的用户会话?,razor,webmatrix,asp.net-webpages,Razor,Webmatrix,Asp.net Webpages,我需要在Webmatrix/Razor/ASP.NET网页中记录唯一的用户会话。_appstart是在应用程序在IIS中第一次启动时启动的,还是在每次唯一用户点击时启动一次?如果只有一次,如何捕获唯一的用户会话和设置 更新:我不确定Global.asax事件是否在Razor/ASP.NET网页下触发。我对它进行了测试,会话启动事件启动得很好。问题解决了 void Session_Start(object sender, EventArgs e) { // Code that runs w

我需要在Webmatrix/Razor/ASP.NET网页中记录唯一的用户会话。_appstart是在应用程序在IIS中第一次启动时启动的,还是在每次唯一用户点击时启动一次?如果只有一次,如何捕获唯一的用户会话和设置


更新:我不确定Global.asax事件是否在Razor/ASP.NET网页下触发。我对它进行了测试,会话启动事件启动得很好。问题解决了

void Session_Start(object sender, EventArgs e)
{
    // Code that runs when a new session is started
    Dictionary<DateTime, String> d = new Dictionary<DateTime, String>();
    Application.Lock();
    if (Application["d"] != null)
    {
        d = (Dictionary<DateTime, String>)Application["d"];
    }
    d.Add(DateTime.Now, HttpContext.Current.Session.SessionID);
    Application["d"] = d;
    Application.UnLock();

}
void会话\u启动(对象发送方,事件参数e)
{
//启动新会话时运行的代码
字典d=新字典();
Application.Lock();
if(应用程序[“d”]!=null)
{
d=(字典)应用程序[“d”];
}
d、 添加(DateTime.Now,HttpContext.Current.Session.SessionID);
申请[“d”]=d;
Application.UnLock();
}

要直接回答您的问题,AppStart将在第一个用户访问您的站点时运行。站点的未来用户不会导致_AppStart运行。没有特定的页面或位置来放置为每个唯一用户运行的代码

您要做的是查看ASP.Net会话对象。在您的页面中,您可以从会话中存储和检索数据,如下所示:

@{
    // Retrieve
    var someSetting = Session["SomeSetting"]
    // Store
    Session["SomeSetting"] = someSetting;
}
ASP.Net将负责确保使用会话cookie存储每个浏览器实例的设置。请注意,如果您在Web场环境中,您将需要一些更健壮的东西,但是当您谈论单个服务器时,这应该是好的


如果您想了解更多信息,请参阅ASP.Net会话状态的官方文档:

要直接回答您的问题,请在第一个用户访问您的站点时运行AppStart。站点的未来用户不会导致_AppStart运行。没有特定的页面或位置来放置为每个唯一用户运行的代码

您要做的是查看ASP.Net会话对象。在您的页面中,您可以从会话中存储和检索数据,如下所示:

@{
    // Retrieve
    var someSetting = Session["SomeSetting"]
    // Store
    Session["SomeSetting"] = someSetting;
}
ASP.Net将负责确保使用会话cookie存储每个浏览器实例的设置。请注意,如果您在Web场环境中,您将需要一些更健壮的东西,但是当您谈论单个服务器时,这应该是好的


如果您想了解更多信息,下面是ASP.Net会话状态的官方文档:

您询问了有关记录“唯一用户会话”的问题,这有点令人困惑。所有会话都是唯一的,但并非所有会话都属于唯一的访问者。返回的访客将开始新的会话。如果要保留会话计数,可以挂接到Global.asax中的Session_Start事件。如果您想统计唯一访客,请使用cookies。如果用户尚未获得cookie,则在用户访问时设置它们。确保其有效期在未来的一段时间内。如果访问者没有您站点的跟踪cookie,那么这些cookie必须是新的(或者他们可能已经删除了cookie…)

您询问了关于记录“唯一用户会话”的问题,这有点令人困惑。所有会话都是唯一的,但并非所有会话都属于唯一的访问者。返回的访客将开始新的会话。如果要保留会话计数,可以挂接到Global.asax中的Session_Start事件。如果您想统计唯一访客,请使用cookies。如果用户尚未获得cookie,则在用户访问时设置它们。确保其有效期在未来的一段时间内。如果访问者没有您站点的跟踪cookie,则这些cookie必须是新的(或者他们可能已经删除了cookie…)

我不确定Global.asax事件是否在Razor/ASP.NET网页下触发。我对它进行了测试,会话启动事件启动得很好。问题解决了。谢谢我不确定Global.asax事件是否在Razor/ASP.NET网页下触发。我对它进行了测试,会话启动事件启动得很好。问题解决了。谢谢