解决:只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时 ,vs2010智能提示消失

问题情形如下
:vs2008转换为vs2010时,拖放的用户控件在设计模式下,提示错误 “创建控件时出错 响应在此上下文中不可用”“创建控件时出错 未将对象引用设置到对象的实例 ”。
问题分析如下
在“BasePage”文件中的OnInit里的以及session[""]判断后进行了Response.Redirect("~/login.aspx")的跳转操作,由于在OnInit中调用的自定义函数里,访问了与服务器相关的变量,如Request,Response,Session,Server等,因为在设计模式时,这些变量是不会存在的,因此进行调用就会引发异常,从而导致这个错误的发生。
解决方案:
一个是检查HttpContext.Current是否为空;第二个就是不重写这样的页面流程函数,而改在事件中检查
采用第一种
protected   override   void   OnInit (EventArgs  e)             
{
        if (System.Web.HttpContext.Current != null)
        {
                ......
               
base . OnInit (e);           
        }

}
另外有一种方法为

protected   override   void   OnInit (EventArgs  e)             
{
        base .OnInit(e);
     if (! this .DesignMode)
     {   ......
     }
}
参考的网友链接
http://mychrome.blogbus.com/logs/86267833.html
http://www.cnblogs.com/alahfun/archive/2010/08/08/1794977.html 

你可能感兴趣的:(解决:只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时 ,vs2010智能提示消失)