页面加载,作为2个单词的句子,表示页面加载时,表示加载所有元素时。
假设我有一个名为Ask.aspx
的页面,此页面仅允许已登录的用户,因此从技术上讲,我会写这样的内容:
if(Session["id"]==null)
Response.Redirect("Login.aspx");
这意味着,我正在测试页面加载后的会话,理论上,我觉得这听起来不对,现在我当然不会注意到它,它会很快,我会尝试访问页面,然后我被重定向到Login.aspx,但是...测试Session on Page Load方法是否正确?
答案 0 :(得分:3)
Page_Load是页面生命周期的一部分。当 服务器 加载页面时调用它,而不是在客户端加载页面时调用...
所以这个是检查会话变量的正确位置......
你实际上在说:在我将页面发回客户端之前,检查我是否为此会话设置了ID
属性...如果我没有 - 告诉客户端重定向到Login.aspx页面......
这是这样做的正确方法......
我建议你也阅读Server.Transfer。它与Response.Redirect
之间的区别在于Server.Transfer
在服务器本身“重定向”到另一个页面并将新页面的结果输出回客户端(客户端不知道它)。
答案 1 :(得分:1)
如果您尝试限制对特定页面的访问,最好使用表单身份验证。
http://support.microsoft.com/kb/301240
设置相当容易,它允许在请求传递到asp.net管道之前检查凭据。在您正在做的事情中,您的页面会在请求被拒绝之前经历整个生命周期(控件是数百并绑定到数据,访问数据库,调用Web服务等)。根据您的具体情况,这可能代价高昂且无法很好地扩展。
编辑:您还可以访问global.asax中的AcquireRequestState
事件。这也将节省整个页面生命周期。