我用C# 做的一个web系统,发布在一个服务器上,服务器的环境是windows2003 sever 数据库orcle 10g ,本系统是一个数据的查询系统,我有一个页面查数据等待的时间很长,有时需要15 分钟之多,查询的结果放在一个htmltable 控件中,有行和列!!!
问题是:::
我用客户机访问该程序查数据等待的时间超过6 7 分钟后数据就不会显示在table中了,程序打log显示数据已经查询完了,不超过这个时间就可以显示,最奇怪的是在服务器本机上运行这个程序不管时间的长短都可以显示出来,后来我在公司用一个客户机发布了该程序(等于说换了一个环境),用另一个机子访问也没问题!
已经排出了服务器中间路由器和防火墙的可能,(以测试了)
很是郁闷啊,怀疑是服务器的操作系统环境有问题,但客户不同意更改环境或从新安转环境!!各位高手指点小弟一下!!!我真的没有分值了就给了10,这是全部了,不好意思,小弟可以下次补上的!!谢谢!

解决方案 »

  1.   

    在查数据的等待过程中你在JS里做一个XMLHTTP,隔1分钟给服务器发个请求。这样就不会请求超时了。。不过5/6 million的数据要查这么久。。数据库优化一下,比如分区视图,对Where语句后面的字段建索引等。。
    我怀疑你是不是要做数据统计查询??不然不会这么久的哦
      

  2.   

    zhongkeruanjian(编程亮子)  大哥,能不能给各具体的例子呢?我的表已经分区了,每个字段也建立了索引,5/6百万室时数据小时,他查找的行数,列数就多了,150行12列形成的表格,一个空格就是一条语句,所以时间很长,!!!
    谢谢了大哥!
      

  3.   

    按原理来说不管什么访问服务器返回的数据都是一样,错误也应该是一样。返回的数据太多这点到是可能性比较大。不该不会直接把几十万行数据直接显示在ie上了吧,这样得nMB数据量了。
      

  4.   

    zhongkeruanjian(编程亮子)  大哥
    是查询的过程很长,我想等查到一半时,向服务器发送一个请求,这样就不会超时了吧!!
    但我不知道这个,xmlhttp怎样去用,希望您给个例子。我从网上查了一些资料,但
    在我的程序里不能实现,代码如下:
    <!-- function changeTxtValue() {    var txtValue = test; var objXmlhttp = new ActiveXObject ("Microsoft.XMLHTTP"); objXmlhttp.Open("POST", "test.aspx?txtValue="+txtValue, true); objXmlhttp.Send(""); var txtReturnValue = objXmlhttp.responseText; alert(txtReturnValue); window.setTimeout('changeTxtValue()',1000); } //-->
    请您指点一下!谢谢1
      

  5.   

    应该就是上面的样子。不能用?是什么错?你知道JAVASCRIPT 调试么?调试一下1。
      

  6.   

    没什么错误信息,就是没有效果,调用不太清楚,我把它写在了页面的onload =方法名();
      

  7.   

    能說說你查詢的過程中都作了哪些動作嗎?是存储过程等操作执行的时间长呢,还是返回的数据量太大,显示什么长?
    如果实前者,就对SQL进行优化;如果是后者,你就要分页。这种方法——在查数据的等待过程中你在JS里做一个XMLHTTP,隔1分钟给服务器发个请求。这样就不会请求超时了...是没有办法的办法了。
      

  8.   

    能說說你查詢的過程中都作了哪些動作嗎?是存储过程等操作执行的时间长呢,还是返回的数据量太大,显示时间长?
    如果实前者,就对SQL进行优化;如果是后者,你就要分页。这种方法——在查数据的等待过程中你在JS里做一个XMLHTTP,隔1分钟给服务器发个请求。这样就不会请求超时了...是没有办法的办法了。
      

  9.   

    一般是这么做的。。查询页面和列表页面分开当查询页面点击查询时,将开一个线程,这个线程去取数据(把取得的数据放在Session里)然后在查询页面里搞XMLHTTP请求,每次请求的内容就是询问取数据的线程是否搞定。每搞定继续查,搞定了后查询页就在JS转到列表页面。列表页面从Session里读数据。(不要告诉我你要取出几十万条数据给客户哦,不然Session会扛不住)