0

我正在做代码审查,发现了这段代码。在线程内抛出异常会导致 IIS 崩溃吗?阅读评论。

         Thread unhandledExceptionThread = new System.Threading.Thread(new System.Threading.ThreadStart(delegate()
         {
              System.Threading.Thread.Sleep(90 * 1000);
              throw new ApplicationException("Thread 1");
         }));
         unhandledExceptionThread.Name = "IntentionalCrasher";
         Thread environmentExitThread = new System.Threading.Thread(new System.Threading.ThreadStart(delegate()
         {
              System.Threading.Thread.Sleep(100 * 1000);
              Environment.Exit(-500);
         }));
         environmentExitThread.Name = "Thread 2";
         unhandledExceptionThread.Start();
         environmentExitThread.Start();
4

1 回答 1

1

它不会导致“IIS 关闭”,但会终止 ASP.NET 工作进程。它将重新启动。

您的代码片段首先尝试通过抛出异常而死。10 秒后,如果这没有帮助,它会自行处理并终止进程。

或者,它可以调用AppDomain.Unload当前域。但这是重启工作进程的合理方式。

确保禁用快速故障保护。这个功能是魔鬼,因为它会在 5 次失败后永久关闭你的应用程序。永久不通知。任何类型的错误。

于 2012-10-11T21:55:09.203 回答