我想在Application_BeginRequest读Session,为什么总报错? 我想在Application_BeginRequest中读Session记录的最后请求时间用来判断用户是否3秒内持续请求,从而防止恶意刷新可老是读不出来请求帮助 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BeginRequest时AcquireRequestState还没有执行,Session是不能使用的。 今天刚看到的文章对你友帮助:http://blog.joycode.com/kaneboy/archive/2004/09/12/33213.aspx 其实你可以先判断一下if(Session["name"]!=null){ ...} session还没有建立怎么使用啊! 先判断seesion是否存在,再进行下面的运算 怎么判断是否存在?用if(Session["name"]==null)不行啊,还是报错,根本就不能用难道我想实现的这个功能是不可能吗? 这个时候Session不存在,你当然没法读了!放到Session_start里! 因為在這個時候Session還不存在 防止恶意刷新最好在客户端控制, 如果你在服务器端做,实际上已经刷新了下面的代码可以参考(IE菜单里面的刷新没有受控,如果有必要,你可以将菜单去掉)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML> <HEAD> <title>aaa</title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0"> <meta name="CODE_LANGUAGE" content="Visual Basic 7.0"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body MS_POSITIONING="GridLayout" onkeydown="event_onkeydown()" oncontextmenu="event.returnValue=false"> <form id="Form1" method="post" runat="server"> <FONT face="宋体"> <TABLE id="Table1" style="Z-INDEX: 101; LEFT: 216px; WIDTH: 344px; POSITION: absolute; TOP: 320px; HEIGHT: 112px" cellSpacing="1" cellPadding="1" width="300" border="1"> <TR> <TD> </TD> <TD> <asp:Button id="Button1" runat="server" Text="Button"></asp:Button></TD> <TD></TD> </TR> <TR> <TD></TD> <TD></TD> <TD></TD> </TR> <TR> <TD></TD> <TD></TD> <TD></TD> </TR> </TABLE> </FONT> </form> <script language="javascript"> var readydate = new Date(); var readyhour = readydate.getHours(); var readyminute = readydate.getMinutes(); //提交时判断 页面生成时间 和 当前时间比较 function Form1.onsubmit() { var submittime = new Date(); var submithour = submittime.getHours(); var submitminute = submittime.getMinutes(); var _interval = submitminute-readyminute; if(readyhour!=submithour || _interval<3) { alert('刷新过快'); event.keyCode = 0; event.returnValue = false; } } //屏蔽F5刷新 function event_onkeydown() { if(event.keyCode == 116) { event.keyCode = 0; event.returnValue = false; } } </script> </body></HTML> 没仔细看原来你是三秒内不许刷新把getHours换成getMinutes把getMinutes换成getSeconds app startapp begin requestsession startapp end requestsession endapp end好象事件是这样的触发顺序 to:luckysusan(海闊天空) 你的方法是在客户端实现,如果用户IE不支持js,一点作用也不起还有用户如果用自己写的浏览器穷举试探登陆页,也没办法防在Application_BeginRequest判断是否刷新,虽然是已经请求了,但可以立即结束请求 session 要在application 之后 看样子你的页面的作用不那么简单啦用户如果用自己写的浏览器穷举试探登陆页?? 也不用自己写浏览器吧,随便写个页面,定义个WebRequest,指向你的页面,来个循环CMIC(大象) ( ) 给出的连接已经说的很清楚了,所以说在Application_BeginRequest判断session来决定是否刷新应该是不可能的了非要这样,我看你还是去具体页面的init里面判断session当然也可能还有高人有另外的方法,期待高人出现! :) 对呀Application_BeginRequest是在Session_Start这前运行,当然不能访问Session哆! AspNetPager用URL参数分页模式下,如何添加多个参数啊? 项目文件删除恢复问题……大侠,高手都快进,急等 页面缓存问题OutputCache ,帮忙下。 数据库更新问题 [ 水晶报表 ] 在win2003 升级sp2后,导出excel出错,导出word正常. 哪个知道? 请教asp.net问题... 在DataGrid中怎样显示多个表的内容!! 关于 Infragistics NetAdvantage 的问题 求助,请教各位大哥几个基本的问题,谢谢! 类别和新闻显示问题 net(c#)开发之你见 急:怎样让页面不缓存js文件?
http://blog.joycode.com/kaneboy/archive/2004/09/12/33213.aspx
if(Session["name"]!=null)
{
...
}
用if(Session["name"]==null)不行啊,还是报错,根本就不能用
难道我想实现的这个功能是不可能吗?
里!
<HTML>
<HEAD>
<title>aaa</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout" onkeydown="event_onkeydown()" oncontextmenu="event.returnValue=false">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<TABLE id="Table1" style="Z-INDEX: 101; LEFT: 216px; WIDTH: 344px; POSITION: absolute; TOP: 320px; HEIGHT: 112px" cellSpacing="1" cellPadding="1" width="300" border="1">
<TR>
<TD>
</TD>
<TD>
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button></TD>
<TD></TD>
</TR>
<TR>
<TD></TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD></TD>
<TD></TD>
<TD></TD>
</TR>
</TABLE>
</FONT>
</form>
<script language="javascript">
var readydate = new Date();
var readyhour = readydate.getHours();
var readyminute = readydate.getMinutes();
//提交时判断 页面生成时间 和 当前时间比较
function Form1.onsubmit()
{
var submittime = new Date();
var submithour = submittime.getHours();
var submitminute = submittime.getMinutes();
var _interval = submitminute-readyminute;
if(readyhour!=submithour || _interval<3)
{
alert('刷新过快');
event.keyCode = 0;
event.returnValue = false;
}
}
//屏蔽F5刷新
function event_onkeydown()
{
if(event.keyCode == 116)
{
event.keyCode = 0;
event.returnValue = false;
}
}
</script>
</body>
</HTML>
原来你是三秒内不许刷新把getHours换成getMinutes
把getMinutes换成getSeconds
app begin request
session start
app end request
session end
app end好象事件是这样的触发顺序
你的方法是在客户端实现,如果用户IE不支持js,一点作用也不起
还有用户如果用自己写的浏览器穷举试探登陆页,也没办法防
在Application_BeginRequest判断是否刷新,虽然是已经请求了,但可以立即结束请求
用户如果用自己写的浏览器穷举试探登陆页??
也不用自己写浏览器吧,随便写个页面,定义个WebRequest,指向你的页面,来个循环CMIC(大象) ( ) 给出的连接已经说的很清楚了,所以说在Application_BeginRequest判断session来决定是否刷新应该是不可能的了非要这样,我看你还是去具体页面的init里面判断session当然也可能还有高人有另外的方法,期待高人出现! :)