【问题标题】:Throwing an Exception In a ASP.NET Thread To Bring Down IIS在 ASP.NET 线程中引发异常以关闭 IIS
【发布时间】:2012-10-02 15:58:53
【问题描述】:

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

         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();

【问题讨论】:

    标签: asp.net multithreading exception iis


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-07-17
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 2014-03-20
      相关资源
      最近更新 更多