Ajax无刷新查询数据库时的问题

时间:2022-08-27 14:07:31
我现在有个用asp.net开发的web项目,其中一个网页需要无刷新定时读取数据库的消息,我利用Ajax异步调用C#查询数据库的方法,主要用的xmlHttpRequest对象,开始运行网站的时候没有问题,但当网页运行一段时间后(大概是4到5个小时),就会在页面js里定时读取数据库的那里弹出一个异常“Error:存储空间已满,无法完成此操作。”
 有没有人知道是什么问题 

17 个解决方案

#1


这个。。。没遇到过,是不是数据库或者硬盘有啥问题?

#2


你看看是不是你C盘满了 ??  如果是就是IE不停的缓存把C盘撑满了 ?

#3


http://www.wangyeba.com/Article/web02/wytx/201003/20100313135459.shtml

#4


4-5个小时?如果没有人手工使用这个页面,那么就不要使用b/s来实现这种功能。如果有人使用这个页面,怎么会4-5个小时呢?应该是分钟之后就转到其它页面上,否则(比如30分钟之后不操作)就应该停止了。

#5


引用 2 楼 yidongliange4 的回复:
你看看是不是你C盘满了 ?? 如果是就是IE不停的缓存把C盘撑满了 ?

C盘剩余空间还有21G,四五个小时应该也不会满
如果是IE缓存满了,在JS里应该如何把缓存清掉呢

#6


四到五小时? 同一个页面一直开4到5小时?

#7


你最好贴一下前台和后台取数据的代码

#8


引用 4 楼 sp1234 的回复:
4-5个小时?如果没有人手工使用这个页面,那么就不要使用b/s来实现这种功能。如果有人使用这个页面,怎么会4-5个小时呢?应该是分钟之后就转到其它页面上,否则(比如30分钟之后不操作)就应该停止了。
有道理。一个页面停留4-5个小时。本来就不是合理的事情

#9


她可能是做类似股票行情一类的东西吧 ?

#10


引用 9 楼 yidongliange4 的回复:
她可能是做类似股票行情一类的东西吧 ?


20分钟不操作,就可以停了。然后她必须手工点“刷新”才重新开始。

#11


这个什么需求要这么长的时间。

#12


引用 6 楼 baysos 的回复:
四到五小时? 同一个页面一直开4到5小时?


整个主页面分为左边和右边两个,由iframe构成,左边那个页面是一直不变的,用户操作的只是右边的页面,所以左边页面就一直在运行,不会转到其他页面去 

我做的是一个客服系统,有电话打进来就要在页面上显示的,所以要定时读取数据库。以前用ocx试过,但发现ocx不太稳定,所以才用了这种方式 

#13


我贴部分代码吧 因为设计到的代码比较多 我尽量多贴点上来 

//读取服务器指令
var xmlServer=false;
var GetMsgTimer;
//var xmlRoot=null;
//var xmlServer=new xmlhttpcls("Call/SendMsg.aspx","post");
function GetServerMsg()
{
    try
    {
        //xmlServer是一个xmlHttpRequest对象,写了一个公用的js,在其他地方用都没问题的
        xmlServer=new xmlhttpcls("Call/SendMsg.aspx","post");
        xmlServer.add("paramter","GetMsg");//参数
        xmlServer.add("cid",CID);
        xmlServer.add("ServerID",ServerID);
        xmlServer.add("ServerIP",ServerIP);
        xmlServer.callback=function()//回调方法
        {
            var servermsg = xmlServer.getXml();//responseXML
            if(servermsg!=null)
            {
                var rootNode = servermsg.documentElement;
                //alert(rootNode)
                if(rootNode!=null && rootNode.childNodes!=null)
                {
                    //alert("aaaaaa");
                    for(var i=0;i<rootNode.childNodes.length;i++)
                    {
                        var child = rootNode.childNodes[i];
                        //alert(child);
                        if(CID==child.childNodes[0].text || ServerID==child.childNodes[0].text)
                        {
                            //页面处理,此处注释之后测试过,也会报那个错
                            OnReceiveMsg(child.childNodes[7].text,child.childNodes[2].text,child.childNodes[3].text);
                        }
                    }
                    
                }
            }
        }
        xmlServer.send();  
     }
    catch(e)
    {
        //那个异常信息就是在这里弹出来的(Error:存储空间不足,无法完成此操作)
        alert(e.name+" htmlmyself:"+e.message);
    }
    
    GetMsgTimer = setTimeout(GetServerMsg,2000);
}

#14


//这个是后台C#代码
case "GetMsg":
                   try
                   {

                       string serverid=context.Request.Params["ServerID"];
                       string serverip=context.Request.Params["ServerIP"];
                       DataTable dt = CallSendMethod.GetCMD(cids, ipp,serverid,serverip);//读取数据库
                        
                       
                       XmlDocument doc = new XmlDocument();
                       doc.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\" ?><baseInfo></baseInfo>");
                       if(dt!=null && dt.Rows.Count>0)
                       {
                           for (int i = 0; i < dt.Rows.Count; i++)
                           {
                               XmlElement basein = doc.CreateElement("base");

                               XmlElement xe1 = doc.CreateElement("TOID");
                               xe1.AppendChild(doc.CreateTextNode(dt.Rows[i]["TOID"].ToString()));

                               XmlElement xe2 = doc.CreateElement("TOIP");
                               xe2.AppendChild(doc.CreateTextNode(dt.Rows[i]["TOIP"].ToString()));

                               XmlElement xe3 = doc.CreateElement("CTYPE");
                               xe3.AppendChild(doc.CreateTextNode(dt.Rows[i]["CTYPE"].ToString()));

                               XmlElement xe4 = doc.CreateElement("MSG");
                               xe4.AppendChild(doc.CreateTextNode(dt.Rows[i]["MSG"].ToString()));

                               XmlElement xe5 = doc.CreateElement("DT");
                               xe5.AppendChild(doc.CreateTextNode(dt.Rows[i]["DT"].ToString()));

                               XmlElement xe6 = doc.CreateElement("FLG");
                               xe6.AppendChild(doc.CreateTextNode(dt.Rows[i]["FLG"].ToString()));

                               XmlElement xe7 = doc.CreateElement("CRF");
                               xe7.AppendChild(doc.CreateTextNode(dt.Rows[i]["CRF"].ToString()));

                               XmlElement xe8 = doc.CreateElement("FROMID");
                               xe8.AppendChild(doc.CreateTextNode(dt.Rows[i]["FROMID"].ToString()));

                               XmlElement xe9 = doc.CreateElement("FROMIP");
                               xe9.AppendChild(doc.CreateTextNode(dt.Rows[i]["FROMIP"].ToString()));

                               basein.AppendChild(xe1);
                               basein.AppendChild(xe2);
                               basein.AppendChild(xe3);
                               basein.AppendChild(xe4);
                               basein.AppendChild(xe5);
                               basein.AppendChild(xe6);
                               basein.AppendChild(xe7);
                               basein.AppendChild(xe8);
                               basein.AppendChild(xe9);

                               doc.DocumentElement.AppendChild(basein);

                               CallSendMethod.DeleteCMD(dt.Rows[i]["TOID"].ToString(), dt.Rows[i]["TOIP"].ToString(), dt.Rows[i]["CTYPE"].ToString(), 
                                   dt.Rows[i]["MSG"].ToString(), dt.Rows[i]["DT"].ToString(),Convert.ToInt32(dt.Rows[i]["FLG"]),
                                   dt.Rows[i]["FROMID"].ToString(), dt.Rows[i]["FROMIP"].ToString());

                           }
                       }
                       context.Response.ContentType = "text/xml";
                       doc.Save(context.Response.OutputStream);

                   }
                   catch (Exception ex)
                   {

                   }
                   break;

#15


重启应用程序池 ServiceController 控制重启
定时请求页面

#16


该回复于2011-03-03 15:05:36被版主删除

#17


还是没解决额 

#1


这个。。。没遇到过,是不是数据库或者硬盘有啥问题?

#2


你看看是不是你C盘满了 ??  如果是就是IE不停的缓存把C盘撑满了 ?

#3


http://www.wangyeba.com/Article/web02/wytx/201003/20100313135459.shtml

#4


4-5个小时?如果没有人手工使用这个页面,那么就不要使用b/s来实现这种功能。如果有人使用这个页面,怎么会4-5个小时呢?应该是分钟之后就转到其它页面上,否则(比如30分钟之后不操作)就应该停止了。

#5


引用 2 楼 yidongliange4 的回复:
你看看是不是你C盘满了 ?? 如果是就是IE不停的缓存把C盘撑满了 ?

C盘剩余空间还有21G,四五个小时应该也不会满
如果是IE缓存满了,在JS里应该如何把缓存清掉呢

#6


四到五小时? 同一个页面一直开4到5小时?

#7


你最好贴一下前台和后台取数据的代码

#8


引用 4 楼 sp1234 的回复:
4-5个小时?如果没有人手工使用这个页面,那么就不要使用b/s来实现这种功能。如果有人使用这个页面,怎么会4-5个小时呢?应该是分钟之后就转到其它页面上,否则(比如30分钟之后不操作)就应该停止了。
有道理。一个页面停留4-5个小时。本来就不是合理的事情

#9


她可能是做类似股票行情一类的东西吧 ?

#10


引用 9 楼 yidongliange4 的回复:
她可能是做类似股票行情一类的东西吧 ?


20分钟不操作,就可以停了。然后她必须手工点“刷新”才重新开始。

#11


这个什么需求要这么长的时间。

#12


引用 6 楼 baysos 的回复:
四到五小时? 同一个页面一直开4到5小时?


整个主页面分为左边和右边两个,由iframe构成,左边那个页面是一直不变的,用户操作的只是右边的页面,所以左边页面就一直在运行,不会转到其他页面去 

我做的是一个客服系统,有电话打进来就要在页面上显示的,所以要定时读取数据库。以前用ocx试过,但发现ocx不太稳定,所以才用了这种方式 

#13


我贴部分代码吧 因为设计到的代码比较多 我尽量多贴点上来 

//读取服务器指令
var xmlServer=false;
var GetMsgTimer;
//var xmlRoot=null;
//var xmlServer=new xmlhttpcls("Call/SendMsg.aspx","post");
function GetServerMsg()
{
    try
    {
        //xmlServer是一个xmlHttpRequest对象,写了一个公用的js,在其他地方用都没问题的
        xmlServer=new xmlhttpcls("Call/SendMsg.aspx","post");
        xmlServer.add("paramter","GetMsg");//参数
        xmlServer.add("cid",CID);
        xmlServer.add("ServerID",ServerID);
        xmlServer.add("ServerIP",ServerIP);
        xmlServer.callback=function()//回调方法
        {
            var servermsg = xmlServer.getXml();//responseXML
            if(servermsg!=null)
            {
                var rootNode = servermsg.documentElement;
                //alert(rootNode)
                if(rootNode!=null && rootNode.childNodes!=null)
                {
                    //alert("aaaaaa");
                    for(var i=0;i<rootNode.childNodes.length;i++)
                    {
                        var child = rootNode.childNodes[i];
                        //alert(child);
                        if(CID==child.childNodes[0].text || ServerID==child.childNodes[0].text)
                        {
                            //页面处理,此处注释之后测试过,也会报那个错
                            OnReceiveMsg(child.childNodes[7].text,child.childNodes[2].text,child.childNodes[3].text);
                        }
                    }
                    
                }
            }
        }
        xmlServer.send();  
     }
    catch(e)
    {
        //那个异常信息就是在这里弹出来的(Error:存储空间不足,无法完成此操作)
        alert(e.name+" htmlmyself:"+e.message);
    }
    
    GetMsgTimer = setTimeout(GetServerMsg,2000);
}

#14


//这个是后台C#代码
case "GetMsg":
                   try
                   {

                       string serverid=context.Request.Params["ServerID"];
                       string serverip=context.Request.Params["ServerIP"];
                       DataTable dt = CallSendMethod.GetCMD(cids, ipp,serverid,serverip);//读取数据库
                        
                       
                       XmlDocument doc = new XmlDocument();
                       doc.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\" ?><baseInfo></baseInfo>");
                       if(dt!=null && dt.Rows.Count>0)
                       {
                           for (int i = 0; i < dt.Rows.Count; i++)
                           {
                               XmlElement basein = doc.CreateElement("base");

                               XmlElement xe1 = doc.CreateElement("TOID");
                               xe1.AppendChild(doc.CreateTextNode(dt.Rows[i]["TOID"].ToString()));

                               XmlElement xe2 = doc.CreateElement("TOIP");
                               xe2.AppendChild(doc.CreateTextNode(dt.Rows[i]["TOIP"].ToString()));

                               XmlElement xe3 = doc.CreateElement("CTYPE");
                               xe3.AppendChild(doc.CreateTextNode(dt.Rows[i]["CTYPE"].ToString()));

                               XmlElement xe4 = doc.CreateElement("MSG");
                               xe4.AppendChild(doc.CreateTextNode(dt.Rows[i]["MSG"].ToString()));

                               XmlElement xe5 = doc.CreateElement("DT");
                               xe5.AppendChild(doc.CreateTextNode(dt.Rows[i]["DT"].ToString()));

                               XmlElement xe6 = doc.CreateElement("FLG");
                               xe6.AppendChild(doc.CreateTextNode(dt.Rows[i]["FLG"].ToString()));

                               XmlElement xe7 = doc.CreateElement("CRF");
                               xe7.AppendChild(doc.CreateTextNode(dt.Rows[i]["CRF"].ToString()));

                               XmlElement xe8 = doc.CreateElement("FROMID");
                               xe8.AppendChild(doc.CreateTextNode(dt.Rows[i]["FROMID"].ToString()));

                               XmlElement xe9 = doc.CreateElement("FROMIP");
                               xe9.AppendChild(doc.CreateTextNode(dt.Rows[i]["FROMIP"].ToString()));

                               basein.AppendChild(xe1);
                               basein.AppendChild(xe2);
                               basein.AppendChild(xe3);
                               basein.AppendChild(xe4);
                               basein.AppendChild(xe5);
                               basein.AppendChild(xe6);
                               basein.AppendChild(xe7);
                               basein.AppendChild(xe8);
                               basein.AppendChild(xe9);

                               doc.DocumentElement.AppendChild(basein);

                               CallSendMethod.DeleteCMD(dt.Rows[i]["TOID"].ToString(), dt.Rows[i]["TOIP"].ToString(), dt.Rows[i]["CTYPE"].ToString(), 
                                   dt.Rows[i]["MSG"].ToString(), dt.Rows[i]["DT"].ToString(),Convert.ToInt32(dt.Rows[i]["FLG"]),
                                   dt.Rows[i]["FROMID"].ToString(), dt.Rows[i]["FROMIP"].ToString());

                           }
                       }
                       context.Response.ContentType = "text/xml";
                       doc.Save(context.Response.OutputStream);

                   }
                   catch (Exception ex)
                   {

                   }
                   break;

#15


重启应用程序池 ServiceController 控制重启
定时请求页面

#16


该回复于2011-03-03 15:05:36被版主删除

#17


还是没解决额