如何崩溃应用程序池?

我们的ASP.NET 2 Web应用程序非常优雅地处理exception。 我们在Application_Error中的Global ASAX中捕获exception。 从那里我们loggingexception,我们向用户显示一个友好的信息。

不过,今天早上我们部署了我们网站的最新版本。 它运行了半个小时,但是App Pool崩溃了。 在我们恢复之前的版本之前,网站没有恢复。

我如何使应用程序池崩溃,并跳过正常的exception处理程序? 我试图复制这个问题,但目前还没有运气。


更新 :我们find了解决scheme。 我们的其中一页是屏幕上的另一个页面。 但是URLconfiguration不正确,页面无限地屏蔽了自己 ,从而导致了堆栈溢出exception。

我看到的最常见的错误和“池崩溃”是循环调用。

public string sMyText { get {return sMyText;} set {sMyText = value;} } 

只需调用sMyText …

为了做到这一点,你所需要做的就是从请求的上下文之外抛出任何exception(当然不用处理)。

例如,在另一个线程上引发的一些exception应该这样做:

 protected void Page_Load(object sender, EventArgs e) { // Create a thread to throw an exception var thread = new Thread(() => { throw new ArgumentException(); }); // Start the thread to throw the exception thread.Start(); // Wait a short while to give the thread time to start and throw Thread.Sleep(50); } 

更多信息可以在这里find在MS知识库

Aristos的答案很好。 我也在页面生命周期中看到了它的一个愚蠢的重写,当有人改变从OnInit的重写方法到OnLoad而不改变基本的调用,所以它在整个生命周期循环遍历:ie

 protected override void OnLoad(EventArgs e) { //some other most likely rubbish code base.OnInit(e); } 

你可以尝试抛出一个ThreadAbortException