我在webservice中存在一个问题,它存在于mono中。 我有一个处理大量数据库操作的web服务。我在“appSettings”标签下的“webconfig”文件中给出了“Timeout = 1024”。
在2分钟后调用webservice时,我收到“线程中止异常”。
请帮我解决这个问题
问候 库马兰
答案 0 :(得分:2)
您还要设置请求超时。默认情况下,这可能是30或60秒。
在system.web
部分中,设置如下内容:
<httpRuntime executionTimeout="200"/>
这会影响所有页面,因此您可能希望将页面放在单独的文件夹中,以便您可以拥有此设置的本地web.config文件。
答案 1 :(得分:1)
将长操作(在您的情况下超过2分钟)放置到同步Web服务方法是不好的做法。通常,Web服务只是在后端服务器或至少另一个线程上启动长时间方法的外观。客户端可以定期检查操作是否完成(所谓的看门狗模式)。或者回顾使用单向方法的可能性 - 当客户根本不关心结果时。
顺便说一句,注意,即使Web请求中的成功操作也必须以ThreadAbort异常结束 - 因为HttpRequest包含它在请求处理结束时提升
答案 2 :(得分:1)
检查无关紧要感。那应该有某种HttpApplication.CancelModelException
应该包含一个标志,指示它是否超时。无论哪种方式,如果你确实有一个不确定的感觉,它可能提供更多的洞察力。
此外,请确保您的方法设置为async。