哪些Asp.net异常可以做什么?

哪些Asp.net异常可以做什么?,asp.net,iis-7,.net-4.0,exception-handling,w3wp,Asp.net,Iis 7,.net 4.0,Exception Handling,W3wp,如果我写这个代码 protected void Page_Load(object sender, EventArgs e) { Page_Load(sender, e); } 我得到一个错误(无休止的递归): 并且w3wp.exe进程从任务管理器终止 很好… 但是,如果我这样做: throw new ApplicationException(); //or SystemException(); 它仅出现在常规异常页面中。(w3wp.exe仍处于运行状态)

如果我写这个代码

  protected void Page_Load(object sender, EventArgs e)
    {
        Page_Load(sender, e);
    }
我得到一个错误(无休止的递归):

并且
w3wp.exe
进程从任务管理器终止

很好…

但是,如果我这样做:

throw new ApplicationException(); //or SystemException();
它仅出现在常规异常页面中。(w3wp.exe仍处于运行状态)

问题:

  • 什么样的异常导致w3wp.exe关闭
  • 什么样的异常导致应用程序池关闭
p、 美国。 根据我刚才写的,请考虑以下情况: 我可以写一个网页,在一个网站群中托管我的网站,我可以通过创建递归来终止整个w3wp.exe进程。。。。。(其他人也会有麻烦)

你能回答我的问题吗


谢谢。

这很可能是著名的。这是由无限循环引起的,因为您一次又一次地调用方法
Page\u Load

从MSDN:

在.NET Framework的早期版本中,您的应用程序可能会 StackOverflowException对象(例如,要从 无界递归)。然而,目前不鼓励这种做法 因为需要大量的额外代码才能可靠地捕获 堆栈溢出异常并继续程序执行

从.NET Framework 2.0版开始,StackOverflowException try-catch块和相应的 进程在默认情况下终止。因此,建议用户 编写代码以检测和防止堆栈溢出。例如 如果应用程序依赖于递归,请使用计数器或状态 条件终止递归循环。请注意,应用程序 托管公共语言运行库(CLR)的可以指定 卸载堆栈溢出异常所在的应用程序域 发生并让相应的进程继续。更多 有关详细信息,请参阅ICLRPolicyManager界面和主机概述

您可能想看看这个答案:


异常的原因是内存溢出。应用程序可以通过多种方式导致这种情况,没有必要猜测特定的场景。我认为好的主机提供商应该受到保护,不受行为不端的应用程序的影响。

添加到alrdy提供的答案中。因为服务器中的每个网站都在一个单独的AppDomain中运行,所以你无法停止整个过程。因此,如果您的代码出现错误,则只会杀死您的appdomain wud。

查看应用程序日志-异常详细信息应显示在那里。@moguzalp No.也是在非调试模式下。但那很好。我在生产中没有真正的例外。我只是想了解哪些异常可以终止什么…(只是为了学习而测试)嗨,蒂姆,是的,我知道,但这只是众多异常中的一个。我想让我的思想组织起来:
哪个异常(它们的特征)可以终止
:1)应用程序池2)w3wpI非常确定
OutOfMemoryException
也会有同样的效果。@volpav-nope
内存不足,无法继续执行程序。
w3wp.exe仍在运行。(好的,现在我只是猜测)如何
AccessViolationException
?请尽量保持txt spch 2的最小值?道具帽也不错。