1

我的情况是这样的:

被创建的页面将运行一个很长的过程。...此过程包括: - 读取文件。CSV,将为文件的每一行创建一个发票...在此过程结束时显示一条成功消息。

为此,决定使用更新面板,以便该过程是异步的,并且可以在等待完成该过程时显示 UpdateProgress ...为此,在 scriptmanagment 的属性中添加了 AsyncPostBackTimeout = 7200(2 小时)并且超时是在应用程序的 web.config 中增加,如在 qa 和生产服务器中。

测试是在 localhost 作为 qa 服务器进行的,并且运行良好,在生产服务器上测试功能时会出现问题。

这使得:文件被加载并启动进程......在此期间正在运行 UpdateProgress 但只需要 1 或 2 分钟并结束执行而不显示最后一条消息,就好像截断了进程一样。查看创建的发票时,仅创建文件的前 10 条记录。(来自具有 50,100 或 + 行的文件)

所以我想帮我解决这个问题,因为我不知道可能出了什么问题。

4

1 回答 1

2

asp.net is not suited for long running processes.

The default page timeout for IIS is 110 seconds (90 for .net 1.0). You can increase this, but it is not recommended.

If you must do it, here is the setting:

<system.web>
   ...
   <httpRuntime executionTimeout="180"/>
   ...
<\system.web>

Refer httpRuntime

Pass on this work to a windows service, WCF or a stand alone exe. Use your page to get the status of the process from that application.

Here is an example that shows how to use workflows for long running processes.

You move the bulk of the processing out of asp.net, and free its threads to handle page requests.

于 2012-08-01T05:37:47.390 回答