|
; 依然显示用户登录页面。 测试失败。 用断点跟踪代码,发现问题出现在MasterPage.cs中的CheckLogin()方法中的代码片段: if (string.IsNullOrEmpty(Request.QueryString["id"]) || string.IsNullOrEmpty(CookieUtil.ReadCookieByKey("id"))) { Response.Redirect("Login.aspx"); } 由于登录页继承自MasterPage,所以页面加载时自动调用MasterPage.cs中的验证方法,而自身的参数又不满足string.IsNullOrEmpty()方法,于是又跳回到登录页面,登录页面在再次在加载时调用基类中的验证方法,于是形成死循环。 在PageBase技术中,Web页面可以有选择的继承自PageBase,而MasterPage技术中,为了获得一致的显示层效果,Web页面对继承MasterPage的选择性是非常底的,而且我们也不应该采用新建相同显示,不带有验证代码的MasterPage,来给不需要继承基类功能的Web页面来继承,这种方式显然不合理。为了解决这个问题,于是开始了 第三次迭代: 引入配置文件: <?xml version="1.0" encoding="utf-8" ?> <pages> <testpage> <page title="TestPage" url="TestPage.aspx" needvalidate="true"/> <page title="Login" url="Login.aspx" needvalidate="false"/> </testpage> <adminpages> <page title="Page1" url="~/Admin/Page1.aspx" needvalidate="false"/> <page title="Page2" url="~/Admin/Page2.aspx" needvalidate="false"/> </adminpages> </pages> 从中可以看到,将需要验证的页面加以标识(needvalidate="true")。 创建Xml数据访问类: public class XmlDAL { private static string filePath = string.Empty; static XmlDAL() { // 初始化配置文件路径 filePath = HttpContext.Current.Request.MapPa上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页 |
|
|
|
|
|
|
|