如果用户中止连接,代码是否继续运行?

时间:2016-02-04 00:00:47

标签: .net asp.net-mvc

我的项目中有一个端点需要很长时间才能加载(+2秒)。如果用户中止连接,是否所有指令都继续运行?

我看到并非所有方法的步骤都完成而没有抛出任何错误。我的猜测是连接正在中止,代码执行在那时停止。

如果是这种情况,使用AsyncController将解决问题吗?

我在IIS 7中使用.NET MVC 5.

1 个答案:

答案 0 :(得分:2)

只要IIS注意到用户已中止,ASP.NET就会抛出ThreadAbortException。从技术上讲,你不应该阻止它,尽管有时小心处理异常可以让你的工作完成。

如果经常发生这种情况,请将详细信息写入队列,然后在Windows服务中将消息出列并完成任务。如果您在Azure中,您可以使用Azure队列和Web作业来真正轻松地完成此任务。