连接被重置ASP.NET(The connection was reset ASP.NET)

2019-09-18 23:50发布

我有一些代码,从SQL数据库提取数据,然后通过记录循环生成一个字符串,它最终会被写入到一个文本文件中。

该代码运行在我的地方不错,从VS,但现场服务器上后,在约一分半钟,我得到“没有数据接收”错误(铬)。 该代码将停止通过DataTable中循环的中间。 主机支持说:“连接被重置”的错误被抛出。

我“不能确定这是否是一个超时问题还是什么。我给自己定的executionTimeout在我的web.config(含调试= false),而它似乎并没有帮助。我也查了Server.ScriptTimeout属性,它匹配executionTimeout值在web.config设置。此外,超时通常会给予“找不到网页”的消息。

任何建议表示赞赏。

Answer 1:

这听起来像这是一个的超时等待响应,而不是服务器上的浏览器。 你无法控制的浏览器已经为这一点。 你可以做的是发出某种浏览器的响应,所以它知道你还在周围,在某些方面还没有崩溃。

对于这个工作,你不能等待,直到你完成构建整个字符串。 你需要重新考虑你的代码,这样,而不是追加到一个字符串,你写的每个除了输出流。 这具有一种更有效的方式来创建文本文件的附加优势。 对于目的保持浏览器活着,你可以因为一些数据是回来的浏览器阅读写出来的东西,只要。 HTML注释可连续工作这一点。 您还需要定期清理你的响应流,让你的数据不是坐在你的Web服务器上的缓冲。 否则,你仍然可能会超时。

当然,真正的解决办法是重新考虑你的设计,使得您的操作并不需要90秒加在首位。 但是除非你能做到这一点,希望这是有帮助的。



Answer 2:

后约一分钟半

这里是你的问题。 这是一个Web应用程序? 一分钟半是一个很长的时间为Web应用程序来响应请求。 足够长的时间,它是不是真的值得从事各种弄虚作假,使其的梳理工作的那种。

你要卸载这个过程是与Web应用程序本身更异步的。 Web应用程序的性质是他们应该得到的请求,并及时做出反应。 你在这里什么是一个长期运行的进程,不能及时作出反应。 web应用可以有助于与数据交互,但不应直接在请求/响应直接处理它们的处理。

如何将Web应用程序与流程交互? 这是否只是启动它,或者它提供了进程开始信息? 我建议的过程本身就像一个Windows服务或者一个控制台应用程序来处理。 从Web应用程序,更好的更多的去耦。 现在,因为我不知道这个过程本身,我在调查其行为几个假设什么...

web应用可以接收请求以启动过程中,随着所需要的过程中的任何信息。 它可以在本存储在具有状态值的数据库(待定,队列中,等),然后给用户(及时)响应该请求已经被接收和处理已被排队。 Web应用程序可以有一个网页,其中检查状态,以便用户可以看到该过程是如何做(如果它开始,它的多少记录走过,等等)。

离线应用程序(Windows服务等)将只监视数据库的新排队的数据进行处理。 当它看到它时,它更新的状态(运行,处理等),并且处理(处理的记录数等)通过更新数据期间提供任何相关的反馈。 因此,离线应用和web应用程序都在该块中的web应用程序的线程,并防止了对用户的响应的方式与相同的数据进行交互,而不是。

当过程结束后,状态再次更新。 Web应用程序可以显示它的完成,并提供下载链接的结果。 当它完成,或也许是Web应用程序可以具有某种通知系统(我想象的小通知图标在Facebook中),这将提醒用户新的活动离线过程甚至可以或许发送电子邮件给用户。

这样,线程没有被阻塞,用户可以继续与应用程序交互(如果有任何东西,甚至与互动),等等,你会得到其他额外的好处,太。 例如,该过程的结果从而保存在数据库中,并自动历史跟踪。



Answer 3:

这听起来像一个超时,您可以尝试,并通过查看返回的信息,这肯定会加快速度。(如果可能)。



Answer 4:

当我有这个错误,我能够在Web.config文件中添加解决它:

<system.web>
    <httpRuntime executionTimeout="600" maxRequestLength="51200"  />
</system.web>


文章来源: The connection was reset ASP.NET