如下代码:
b.aspx
for (int i = 0; i < ip.Length; i++)
{
DataRow dr = dt.NewRow();
dr["ip"] = ip[i];
dt.Rows.Add(dr);
}
topology_GridView.DataSource = dt;
topology_GridView.DataBind();a.aspx
var dataFresh=20;
function showdiv()
{
dataFresh=dataFresh-1;
if(dataFresh==0)
{
dataFresh=20;
layer1.innerHTML="<iframe name='I1' src='b.aspx' marginwidth='0' marginheight='0' height='100%' width='100%' scrolling='no' border='0' frameborder='0' style='height: 102%' id='IFRAME1'></iframe>";
layer1.style.top=td1.style.top;
layer1.style.left=0;
layer1.style.display="";
}
}
setInterval(showdiv,1000);
以上代码是没问题的。b.aspx仲还有一些赋值的算法,但都可以忽略,因为我试过分别单独执行过,问题是出在这段代码中
现在的问题是,假设ip.Length<=1000,但为什么我datatable中连1000条数据都没有的情况下,居然会导致到进程池崩溃呢?我以前用这样的方法绑定超过10000条数据都没有问题,为什么这种情况下,绑定1000条都不行呢?C#没理由连1000条数据都处理不了啊,实在不解,请各位大虾帮忙,谢谢
b.aspx
for (int i = 0; i < ip.Length; i++)
{
DataRow dr = dt.NewRow();
dr["ip"] = ip[i];
dt.Rows.Add(dr);
}
topology_GridView.DataSource = dt;
topology_GridView.DataBind();a.aspx
var dataFresh=20;
function showdiv()
{
dataFresh=dataFresh-1;
if(dataFresh==0)
{
dataFresh=20;
layer1.innerHTML="<iframe name='I1' src='b.aspx' marginwidth='0' marginheight='0' height='100%' width='100%' scrolling='no' border='0' frameborder='0' style='height: 102%' id='IFRAME1'></iframe>";
layer1.style.top=td1.style.top;
layer1.style.left=0;
layer1.style.display="";
}
}
setInterval(showdiv,1000);
以上代码是没问题的。b.aspx仲还有一些赋值的算法,但都可以忽略,因为我试过分别单独执行过,问题是出在这段代码中
现在的问题是,假设ip.Length<=1000,但为什么我datatable中连1000条数据都没有的情况下,居然会导致到进程池崩溃呢?我以前用这样的方法绑定超过10000条数据都没有问题,为什么这种情况下,绑定1000条都不行呢?C#没理由连1000条数据都处理不了啊,实在不解,请各位大虾帮忙,谢谢
2 c#是编程语言,而并不负责编译处理编程后的页面和后台代码。
3 靠目前的代码实在不好看出问题在哪,应该是执行a页面时候出错吧?请问错误的详细信息是什么?
1:a.aspx是一个页面,b.aspx是a.aspx中用一个iframe连接的页面,b.aspx页面就只有gridview。两个页面是独立的。并没有混在一起写,b.aspx那段代码是写在b.aspx.cs中的。a.aspx每隔20秒就重新连接一次b.aspx,也就是说b.aspx的代码每20秒执行一次
2:不太明白
3:a页面没有错误,也不是值b页面有任何错误,只是我的错误是因为b页面所写的算法太复杂导致进程池崩溃。错误的表现信息是session过期,但实际上是进程池崩溃(IIS回收所有资源)。而我不明白也正是为什么b页面的这个算法会导致这个问题
1:a.aspx是一个页面,b.aspx是a.aspx中用一个iframe连接的页面,b.aspx页面就只有gridview。两个页面是独立的。并没有混在一起写,b.aspx那段代码是写在b.aspx.cs中的。a.aspx每隔20秒就重新连接一次b.aspx,也就是说b.aspx的代码每20秒执行一次
2:不太明白
3:a页面没有错误,也不是值b页面有任何错误,只是我的错误是因为b页面所写的算法太复杂导致进程池崩溃。错误的表现信息是session过期,但实际上是进程池崩溃(IIS回收所有资源)。而我不明白也正是为什么b页面的这个算法会导致这个问题
-----------------------1 你的问题描述信息是不正确的,副标题都是*.aspx,可是一个是来源与aspx文件一个不是。
2 主要针对的是你“c#处理”的言论。你的说法根本就不对,C#哪管你后台代码执行啊
3 lz还是没看懂,我看到你说的页面单独执行没问题,不过o说的是“a页面执行错误”,不等同于a页面错误,b页面错误!!!!!既然你知道b页面算法复杂,又咋说“b页面有些赋值算法,可以忽略了”?这不是前后矛盾?OK,抛开这些文字漏洞,既然你知道算法复杂,那么你就应该变动一下你的算法,增大超时时间http://bbs.valu.cn/dis-168732-1-1.html,另外考虑下异步显示或者不要一次加载全部数据。
for (int i = 0; i < ip.Length; i++)
{
DataRow dr = dt.NewRow();
dr["ip"] = ip[i];
dt.Rows.Add(dr);
}
topology_GridView.DataSource = dt;
topology_GridView.DataBind();
这个算法会导致进程池崩溃这么严重的问题。你就当b页面只有这么一个算法,前面的赋值都不过是datatable dt = new datatable之类,因为我试过单独执行这段代码都有问题,所以很奇怪,因为这种绑定gridview的方法可是很常用的啊,我意思就是问,这段东西的效率就真的那么低下吗?
又看到一个小问题
for (int i = 0; i < ip.Length; i++)
{
DataRow dr = dt.NewRow();
dr["ip"] = ip[i];
dt.Rows.Add(dr);
}
-》建议改成
DataRow dr;
for (int i = 0; i < ip.Length; i++)
{
dr = dt.NewRow();
dr["ip"] = ip[i];
dt.Rows.Add(dr);
}
这个页面后台代码就只有个page_load事件有你手写的代码么?
var dataFresh=20;
function showdiv()
{
dataFresh=dataFresh-1;
if(dataFresh==0)
{
dataFresh=20;
layer1.innerHTML=" <iframe name='I1' src='b.aspx' marginwidth='0' marginheight='0' height='100%' width='100%' scrolling='no' border='0' frameborder='0' style='height: 102%' id='IFRAME1'> </iframe>";
layer1.style.top=td1.style.top;
layer1.style.left=0;
layer1.style.display="";
}
}
setInterval(showdiv,1000);
a页就是这样调用B页啊