问题情形如下
:vs2008转换为vs2010时,拖放的用户控件在设计模式下,提示错误 “创建控件时出错 响应在此上下文中不可用” 和 “创建控件时出错 未将对象引用设置到对象的实例 ”。
问题分析如下
在“BasePage”文件中的OnInit里的以及session[""]判断后进行了Response.Redirect("~/login.aspx")的跳转操作,由于在OnInit中调用的自定义函数里,访问了与服务器相关的变量,如Request,Response,Session,Server等,因为在设计模式时,这些变量是不会存在的,因此进行调用就会引发异常,从而导致这个错误的发生。
解决方案:
一个是检查HttpContext.Current是否为空;第二个就是不重写这样的页面流程函数,而改在事件中检查
采用第一种
http://mychrome.blogbus.com/logs/86267833.html
http://www.cnblogs.com/alahfun/archive/2010/08/08/1794977.html
: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