C# 当客户端关闭连接时,IIS/ASP.NET能否中止HTTP请求?

C# 当客户端关闭连接时,IIS/ASP.NET能否中止HTTP请求?,c#,asp.net,iis,C#,Asp.net,Iis,假设在ASP.NET中处理HTTP请求需要很长时间,一个不耐烦的用户会多次刷新页面。现在我运行了同一请求的多个副本,使得响应速度更慢 如果客户端在请求仍在处理时关闭了连接,我希望IIS中止线程。IIS已经可以在超时时中止线程,但我只希望在客户端关闭连接时中止线程 我知道我可能会在请求进行时检查Response.IsClientConnected,但这将是对数百种方法的大量检查。我只想在客户端断开连接后立即自动中止线程。最好的方法是将请求/响应限制为几秒钟,即5到10秒钟。如果请求失败,请给他们重

假设在ASP.NET中处理HTTP请求需要很长时间,一个不耐烦的用户会多次刷新页面。现在我运行了同一请求的多个副本,使得响应速度更慢

如果客户端在请求仍在处理时关闭了连接,我希望IIS中止线程。IIS已经可以在超时时中止线程,但我只希望在客户端关闭连接时中止线程


我知道我可能会在请求进行时检查
Response.IsClientConnected
,但这将是对数百种方法的大量检查。我只想在客户端断开连接后立即自动中止线程。

最好的方法是将请求/响应限制为几秒钟,即5到10秒钟。如果请求失败,请给他们重试选项。此外,当请求被送达时,将忙碌的进度条或淡出屏幕以获得最佳UI体验。这就是我为我的一个项目所做的,每个用户都非常高兴,现在他们知道服务器很忙,很快就会回复您

如果您有长时间运行的进程,请不要在HTTP请求中运行它们。开始一场比赛。假设我这样做。如果客户端不在,我仍然需要中止后台进程。我该怎么做?网络是无状态的。你只需要等到你决定他们走了,然后干掉背景工作。无论哪种方式,都不要在HTTP请求上下文中执行长时间运行的任务。
QueueBackgroundWorkItem
返回void。我怎么才能干掉这样的背景工作?好问题!我的大脑一直在说“如果客户端/浏览器重复使用同一个连接…”如何才能真正识别“这个”连接…我特别说过超时对我不起作用:[…]IIS可以在超时时中止线程,但我希望只有当客户端关闭连接时线程才会中止。[…]然后,您必须切换到持久HTTP连接,我认为您不会喜欢。另一个有用的概念是信号器