当用户关闭浏览器等待长时间运行的 Web 服务调用时会发生啥?

Posted

技术标签:

【中文标题】当用户关闭浏览器等待长时间运行的 Web 服务调用时会发生啥?【英文标题】:What happens when a user closes their browser waiting for a long running web service call?当用户关闭浏览器等待长时间运行的 Web 服务调用时会发生什么? 【发布时间】:2010-09-29 01:34:18 【问题描述】:

我也有类似的问题: http://social.msdn.microsoft.com/forums/en-US/biztalkgeneral/thread/87d5a6ec-04ee-4c6f-8267-f526ee105f0b

我有一个调用 BizTalk Web 服务的 asp.net 网页。 BizTalk 业务流程执行其工作并向 asp.net 页面返回响应。该过程可能需要一两分钟。我遇到了很多超时,但 BizTalk 业务流程似乎平均在 30 秒内返回。

我想知道,如果用户提交他们的请求然后立即关闭他们的浏览器会发生什么。 asp.net 客户端是否停止等待 BizTalk 的请求(并导致超时),或者即使用户关闭了浏览器,它仍然会等待请求?

【问题讨论】:

我自己也想知道这个,其实...... 我也想知道。我的直觉是服务器将无法知道,但也许我错了。 我相信服务器会运行调用,如果返回的客户端不再可用,它会丢弃数据。因此,它基本上会遇到超时(来自服务器本身)或在数据可用时丢弃数据。虽然不是 100%。 【参考方案1】:

ASP.NET 请求继续执行,忽略了最初提交 GET/POST 的浏览器不再等待这一事实。请求将完成,除非出现任何其他错误,例如服务器超时。

【讨论】:

行为取决于浏览器和服务器是否都配置为保持连接。如果客户端断开套接字,服务器将关闭会话,中止执行。

以上是关于当用户关闭浏览器等待长时间运行的 Web 服务调用时会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

带有进度通知的长时间运行的后台任务

具有长时间运行计算的 Django 应用程序

Fetch在等待很长时间时给出空响应

asp.net 页面在服务器上需要很长时间的加载时间

APP长时间处于后台,再次调用时提示用户重新登录

使用登录用户长时间运行的 Windows 服务