c# - 进行大量查询时,asp.net 网站停止响应

标签 c# asp.net sql-server-2005 iis-6 windows-server-2003

我有一个即将发布的 asp.net 网站。该网站涉及企业管理。我为发布做的准备工作之一是将购买的企业列表中的一大堆数据上传到我们的 SQL 数据库中。为此,我使用了一种非常简单的方法:将 .csv 文件放在服务器上的文件夹中,并使用临时页面上的 Page_Load 事件来执行处理数据所需的逻辑并将其放入数据库中.

这是一个漫长的过程。业务列表被分解为一大堆文件,我在页面上设置了脚本,以便在每次刷新页面时从一个文件导入所有数据。每个文件大约需要 10 分钟。

奇怪的是:当处理这些数据时(当服务器正在处理所有内容时,在 page_load 方法终止之前),网站被阻止 - 没有其他用户可以访问它,并且网站上的其他页面也不会加载。他们陷入了“正在连接...”阶段。

目前这并不是一个大问题,因为该网站只是在测试环境中运行。但是,当网站上线时,我可能需要使用类似的脚本将数据放入数据库,显然,在发生这种情况时阻止所有用户的访问是 Not Acceptable 。

我相当确定这不是 SQL Server 的问题,因为我能够在该进程运行时同时进行查询,因此肯定是 Web 服务器出了问题。

我无法发布代码摘录,因为它冗长且技术性强。不过,这并不困难:该方法从 .csv 文件中读取数据,对其进行处理,并对文件的每一行向外部服务发出 HTTP 请求,以收集一些更相关的数据。然后,所有数据被插入到SQL数据库中。

据我了解,网络服务器不应该像这样阻塞。他们应该能够同时向大量用户提供页面,即使一个线程/用户需要大量资源。

任何人都可以建议可能会发生什么吗?我应该从哪里开始寻找解决方案?

最佳答案

让异步处理程序处理请求。

http://msdn.microsoft.com/en-us/library/ms227433%28v=vs.85%29.aspx

这将使您的网站能够在漫长的流程运行期间继续开展业务。

关于c# - 进行大量查询时,asp.net 网站停止响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7569358/

相关文章:

c# - 等待按键(或)N 秒过期

asp.net - 预编译 ASP.NET 解决方案以进行部署

SQL:将具有开始/结束的行扩展为单独的行

sql-server - 哪种数据类型最适合在 SQL Server 中存储注释?

c# - 在我的 XAML 中,我可以将一个 ComboBox 和多个 ComboBoxItems 制作成一个静态或动态资源吗?

c# - 使用扩展方法时的意外行为

c# - 我如何根据它们传播的客户端应用程序实例对套接字连接进行分组?

c# - 在 C# 中告诉 "other"任务暂停

c# - C# 中的 PDF 审阅器(ASP.NET/Silverlight?)

sql-server-2005 - 重命名重复行