我有一个批处理系统需要向一群人发送消息(通过短信/电子邮件)。
由于我们的消息发布系统相当慢,当用户点击“发送”按钮时,系统将所有消息通知发布到具有“批次ID”的数据库中,然后执行异步调用(WebRequest.BeginGetRequest) “ProcesBatch”ASHX处理程序请求,批次ID为URL请求参数。
这会将前端页面发回给用户以进行下一批消息,因为用户实际上不需要任何反馈,但是,数据库中的记录随后会在报告模块中使用。
同时,批处理处理程序只是循环访问数据库中给定批处理ID的记录,然后按顺序将消息发布到我们的(慢速)消息发布者。
问题是在批处理期间,asp.net正在抛出
System.Threading.ThreadAbortException: Thread was being aborted.
一半通过,其余消息不会发送。
我已经检查了IIS,并且回收分钟设置为默认值1740,那么还有其他什么会导致这种情况吗?
或者是否有更合适的方法来解决这个问题。
答案 0 :(得分:2)
您是否尝试在web.config中的httpRuntime下增加executionTimeout?
默认值为90或110秒(取决于.net版本)
也许你的ashx需要更多的时间来结束它的工作
http://msdn.microsoft.com/en-us/library/vstudio/e1f13641(v=vs.100).aspx
编辑:一般来说,设置一个非常长的executionTimeout并不是一个好主意。正如其他用户建议的那样,考虑开发Windows服务来完成长期工作。