Ban*_*hee 0 c# asp.net webservice-client
嗨,
我有一个ASP.NET应用程序,我添加了一个包含"fire and forget"方法的Webservice.执行此方法时,它将启动一个循环(0-99999),对于每个循环,它将读取一个xml文件并将其保存到数据库中.
问题是此操作需要几个小时,通常以线程中止异常结束?
我已经看到你可以增加executionTimeout,这是如何:
<httpRuntime executionTimeout="604800"/>
<compilation debug="true">
Run Code Online (Sandbox Code Playgroud)
但这没有用?
我还尝试在循环中添加thread.sleep.如果我将它设置为500它将会进入一半,如果我设置<100,它将在线程中止异常之前进行几次1000循环?
我怎么解决这个问题?
不要在Web服务中运行循环.相反,它在控制台应用程序,winforms应用程序,甚至可能是Windows服务.使用Web服务启动其他程序.
Web服务基本上是一个Web页面,而asp.net Web页面并不意味着托管长时间运行的进程.
本文不直接回答您的问题,但包含与我的答案相关的一小段信息:
http://msdn.microsoft.com/en-us/magazine/dd296718.aspx
但是,当操作的持续时间长于典型的ASP.NET会话持续时间(20分钟)或需要多个actor(如我的招聘示例中)时,ASP.NET不提供足够的支持.您可能还记得ASP.NET工作进程在空闲时自动关闭并定期自行回收.这将导致长期运行的大问题,因为这些过程中的状态将会丢失.
无论如何,这篇文章读起来不错.它可能会为您提供想法.