我有一些代码可以从SQL DB中提取数据,然后遍历记录以生成一个字符串,该字符串最终将被写入文本文件。
通过VS,我的本地代码运行良好,但是在实时服务器上,大约一分半钟后,出现“未接收到数据”错误(chrome)。该代码在循环遍历DataTable的过程中停止。托管支持人员说,抛出了“连接已重置”错误。
我不确定这是否是超时问题,还是什么。我已经在web.config中设置了executeTimeout(使用debug = false),但似乎没有帮助。我还检查了Server.ScriptTimeout属性,并它确实与在web.config中设置的executionTimeout值匹配。
此外,超时通常会显示“页面不可用”消息。
任何建议表示赞赏。
最佳答案
听起来好像是浏览器超时等待响应,而不是在服务器上等待。您无法控制浏览器为此设置的内容。您可以做的是向浏览器发送某种响应,以使它知道您还在,并且没有以某种方式崩溃。
为此,您不能等到完成整个字符串的构建。您需要重新考虑代码,以便将每个添加项写入到输出流中,而不是附加到字符串中。这具有作为创建文本文件更有效的方式的附加优势。为了使浏览器保持 Activity 状态,您可以写出任何内容,只要返回一些数据供浏览器读取即可。 HTML注释可以解决这个问题。您还需要定期刷新响应流,以使数据不会被缓冲在Web服务器上。否则,您可能仍会超时。
当然,这里真正的解决方案是重新考虑您的设计,这样一来您的操作就无需花费90秒以上的时间。但是,直到您可以做到这一点,希望对您有所帮助。