哪个网站能发信息的网站事件的?

请教高手离开网站会触发什么事件???(C#)(顶者有分)
请教高手离开网站会触发什么事件???(C#)(顶者有分)
发布时间: 0:34:41
编辑:www.fx114.net
本篇文章主要介绍了"请教高手离开网站会触发什么事件???(C#)(顶者有分)
100CSDN]",主要涉及到请教高手离开网站会触发什么事件???(C#)(顶者有分)
100CSDN]方面的内容,对于请教高手离开网站会触发什么事件???(C#)(顶者有分)
100CSDN]感兴趣的同学可以参考一下。
请问当访问者关闭网站所有网页(也就是要离开所访网站)会触发什么事件?我想在网站访问者
离开我的网站时的事件中删除保存在数据库中的一些信息Session_EndSession&events&are&similar&to&application&events&(there&is&a&Session_Start&and&a&Session_End&event),&but&are&raised&with&each&unique&session&within&the&application.&A&session&begins&when&a&user&requests&a&page&for&the&first&time&from&your&application&and&ends&either&when&your&application&explicitly&closes&the&session&or&when&the&session&times&out.眼睛和电脑都舒服了。高手离开网站会触发什么事件?
噢,他们静悄悄地离开,不带走一片云彩......楼上的很正确,不带走一片云彩。呵呵~&开个小玩笑~
回到正题,&在Global.asax里的Session_End事件可以利用,
前提是在Web.config里要把SessionStateMode设置为inproc
那么用户离开后,Session在一段时间后就会自动失效,失效时触发Session_End事件确实是不带走一片云彩!这个“一段时间”,实际太长了,仅仅是为了回收Session的需要而用的,一般不能满足及时判断“离开网站”的需求。学习了,,进步了,,顶上不管用呀。我让他删除一个文件都不成功onunload&看看行不行请教高手离开网站会触发什么事件???
楼主还真幽默!onunload&看看行不行
这是关闭页面触发的up贴一个比较可靠的,能满足楼主的需求,但是牺牲的性能也比较可观,所以楼主自己考虑了...
代码放在Global.asax里,思路是:登录用户的信息都保存在服务器的一个表单里,用户每次发出请求就刷新一下,同时另外有一个Timer在检查这张表单,发现用户‘一段时间’没有请求后就可以认为这个用户已经离开,然后就可以到数据库修改相关信息了,这个‘一段时间’是代码中定义的,一分钟也可以,一小时也可以,
private&static&System.Threading.Timer&
private&const&int&interval&=&1000&*&60&*&20;//检查在线用户的间隔时间
&&&&&&&&///&&summary&
&&&&&&&&///&必需的设计器变量。
&&&&&&&&///&&/summary&
&&&&&&&&private&ponentModel.IContainer&components&=&
&&&&&&&&public&Global()
&&&&&&&&&&&&InitializeComponent();
&&&&&&&&protected&void&Application_Start(Object&sender,&EventArgs&e)
&&&&&&&&&&&
&&&&&&&&&&&&if&(timer&==&null)
&&&&&&&&&&&&&&&&timer&=&new&System.Threading.Timer(new&System.Threading.TimerCallback(ScheduledWorkCallback),
&&&&&&&&&&&&&&&&&&&&sender,&0,&interval);
&&&&&&&&&&&&DataTable&userTable&=&new&DataTable();
&&&&&&&&&&&&userTable.Columns.Add("UserID");//用户ID
&&&&&&&&&&&&userTable.Columns.Add("UserName");//用户姓名
&&&&&&&&&&&&userTable.Columns.Add("FirstRequestTime");//第一次请求的时间
&&&&&&&&&&&&userTable.Columns.Add("LastRequestTime");//最后一次请求的时间
&&&&&&&&&&&&userTable.Columns.Add("ClientIP");//
&&&&&&&&&&&&userTable.Columns.Add("ClientName");//
&&&&&&&&&&&&userTable.Columns.Add("ClientAgent");//
&&&&&&&&&&&&
&&&&&&&&&&&&userTable.PrimaryKey&=&new&DataColumn[]{userTable.Columns[0]};
&&&&&&&&&&&&userTable.AcceptChanges();
&&&&&&&&&&&&Application.Lock();
&&&&&&&&&&&&Application["UserOnLine"]&=&userT
&&&&&&&&&&&&Application.UnLock();
&&&&&&&&protected&void&Application_AcquireRequestState(Object&sender,&EventArgs&e)
&&&&&&&&&&&&if(sender&==&null)&
&&&&&&&&&&&&if(!(sender&is&HttpApplication))&
&&&&&&&&&&&&HttpApplication&mApp&=&(HttpApplication)
&&&&&&&&&&&&if(mApp.Context.Session&==&null)&
&&&&&&&&&&&&if(mApp.Context.Session["UserID"]==null&)&
&&&&&&&&&&&&string&userID&=&mApp.Context.Session["UserID"].ToString();
&&&&&&&&&&&&
&&&&&&&&&&&&if(Application["UserOnLine"]&==&null)&
&&&&&&&&&&&&if(!(Application["UserOnLine"]&is&DataTable))&
&&&&&&&&&&&&
&&&&&&&&&&&&DataTable&userTable&=&(DataTable)Application["UserOnLine"];
&&&&&&&&&&&&DataRow&curRow&=&userTable.Rows.Find(new&object[]{userID});
&&&&&&&&&&&&if(curRow&!=&null)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&this.GetDataRowFromHttpApp(mApp,ref&curRow);
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&DataRow&newRow&=&userTable.NewRow();
&&&&&&&&&&&&&&&&this.GetDataRowFromHttpApp(mApp,ref&newRow);
&&&&&&&&&&&&&&&&userTable.Rows.Add(newRow);
&&&&&&&&&&&&}
&&&&&&&&&&&&if(userTable.GetChanges()!=null)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&userTable.AcceptChanges();
&&&&&&&&&&&&&&&&Application.Lock();
&&&&&&&&&&&&&&&&Application["UserOnLine"]&=&userT
&&&&&&&&&&&&&&&&Application.UnLock();
&&&&&&&&&&&&}
&&&&&&&&private&void&GetDataRowFromHttpApp(HttpApplication&mApp,ref&DataRow&mRow)
&&&&&&&&&&&&if(mApp.Context.Session&==&null)&
&&&&&&&&&&&&if(mApp.Context.Session["UserID"]==null&||&mApp.Context.Session["UserName"]==null)&
&&&&&&&&&&&&string&userID&=&mApp.Context.Session["UserID"].ToString();
&&&&&&&&&&&&string&userName&=&mApp.Context.Session["UserName"].ToString();
&&&&&&&&&&&&
&&&&&&&&&&&&if(mRow.RowState&==&DataRowState.Detached)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&mRow["UserID"]&&&&&&=&userID;
&&&&&&&&&&&&&&&&mRow["UserName"]&&&&=&userN
&&&&&&&&&&&&&&&&mRow["FirstRequestTime"]&=&System.DateTime.N
&&&&&&&&&&&&&&&&mRow["ClientIP"]&&&&=&mApp.Context.Request.UserHostA
&&&&&&&&&&&&&&&&mRow["ClientName"]&&=&mApp.Context.Request.UserHostN
&&&&&&&&&&&&&&&&mRow["ClientAgent"]&=&mApp.Context.Request.UserA
&&&&&&&&&&&&&&&&mRow["LastRequestTime"]&=&System.DateTime.N
&&&&&&&&&&&&}
&&&&&&&&&&&&else&if(!mRow.IsNull("LastRequestTime"))
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&DateTime&time&=&Convert.ToDateTime(mRow["LastRequestTime"]&);
&&&&&&&&&&&&&&&&if(((TimeSpan)(DateTime.Now&-&time)).TotalMinutes&1)
&&&&&&&&&&&&&&&&&&&&mRow["LastRequestTime"]&=&System.DateTime.N
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&&&private&void&ScheduledWorkCallback&(object&sender)
&&&&&&&&&&&&string&filter&=&"Convert(LastRequestTime,'System.DateTime')&&&Convert('"&+&System.DateTime.Now.AddSeconds(-interval/1000).ToString()&+&"','System.DateTime')";
&&&&&&&&&&&&if(Application["UserOnLine"]&==&null)
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&DataTable&userTable&=&(DataTable)Application["UserOnLine"];
&&&&&&&&&&&&DataRow[]&lineOutUsers&=&userTable.Select(filter);
&&&&&&&&&&&&for(int&i=0;i&lineOutUsers.Li++)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&DataRow&curRow&=&lineOutUsers[i];
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&//保存到数据库
&&&&&&&&&&&&&&&&//........
&&&&&&&&&&&&}
&&&&&&&&&&&&if(userTable.GetChanges()!=null)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&userTable.AcceptChanges();
&&&&&&&&&&&&&&&&Application.Lock();
&&&&&&&&&&&&&&&&Application["UserOnLine"]&=&userT
&&&&&&&&&&&&&&&&Application.UnLock();
&&&&&&&&&&&&}
&&&&&&&&没有看上面的程序,所以下面可能是重复的。
通常用户在看页面的时候,可能会持续好几分钟甚至十几分钟也没有请求服务器。而此时显然用户还是在线的。另外,当用户关闭窗口,显然需要尽快获得他离开的事件,几分钟之后才知道已经太长时间了。因此,楼上那类向服务器定时“触发一下”的动作,需要加入所有页面一个隐藏(style=display:none)iframe里。当用户在一个页面上“发呆”的时候,隐藏的iframe(或者httpRequest代码)静悄悄地触发服务器,而不影响用户使用。高手离开网站的话,会留下“某某黑客到此一游”。基本不能准确判断的..最好的办法就是间隔3秒左右删除一次服务器上的在线用户..然后每次打开页面都加入一次当前用户...
你可以看一下计数器的功能...
如果不需要很准确的话,上面提到的那些事件都是可以达到目的的.三星的那個牛B关闭网站所有网页(也就是要离开所访网站)会触发Session_End事件,不过不会立即触发。要等到
Session失效后才触发一般网站都有一个session,就算是你不做任何操作,在一定时间后session会失效,也就是session&&time&&out&&。要是你自己点注销或是登出等,那除了session失效外,你的cookie得也失效你可以看工商银行的网银&.就是你想要的效果.可以用js来完成,在body里&body&onunload="reload();"&&,如果想调用后台代码看http://community.csdn.net/Expert/topic/.xml?temp=.8928186Session_Endjs完成,回发服务器。在服务器端是无法得到这个信息的。up顶!up关闭还是离开?
问:Ikram&想要知道是否可以检测用户何时从脚本关闭了浏览器。
回答:简单来说,答案是不行,但是因为我们还有一些额外空间,所以还有一种方法可以进行一种非常有根据的猜测。如果您将下列内容用作&BODY&onUnload&事件处理程序,则在任何情况下都会真正捕获到它:
function&body_onUnload()
&&&if&(window.event.clientX&&&0)
&&&&&&alert("The&browser&is&closing...");
&&&&&&alert("The&user&is&refreshing&or&navigating&away...");
不要&Enter关注,Mark请教:高手离开网站会触发什么事件???(一堆跟屁的帖子)
请教高手:离开网站会触发什么事件???(这个俺要学习)
理解ing..............................................................不推荐采用Application保存用户在线信息,因为Locl()的时候Application会被暂时锁定,如果Application变量只有一个,就是保存用户信息,那还可以,否则其他的信息也会同时被锁定。
这时候,系统性能会下降,既然做出来了DataTable表示用户信息,那锁定DataTable就可以是局部锁定了,性能会有所提高!好主意很多学习学习学习ing
关注性能问题....使用xmlhttp来定时访问一个页面来定时获得人员是离开了网页up客户端出发的是什么事件呢??
如何在用户换页面时在前台进行提示?高手离开网站时,低手会舍不得。呵呵。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:}

我要回帖

更多关于 能发软文的网站 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信