如何在Webmatrix/Razor/ASP.NET网页中捕获唯一的用户会话?
我需要在Webmatrix/Razor/ASP.NET网页中记录唯一的用户会话。_appstart是在应用程序在IIS中第一次启动时启动的,还是在每次唯一用户点击时启动一次?如果只有一次,如何捕获唯一的用户会话和设置如何在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
更新:我不确定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网页下触发。我对它进行了测试,会话启动事件启动得很好。问题解决了。谢谢