如何崩溃应用程序池?

我们的ASP.NET 2 Web应用程序非常优雅地处理异常。我们在Application_Error中捕获Global ASAX中的异常。从那里,我们记录异常和我们展示了一个友好的信息给用户。

但是,今天早上,我们部署了网站的最新版本。运行了半个小时,但随后应用程序池崩溃了。在我们还原了以前的版本之前,该站点没有恢复。

如何使应用程序池崩溃并跳过普通的异常处理程序?我正在尝试复制此问题,但到目前为止还没有运气。


更新:我们找到了解决方案。我们的其中一页正在抓屏另一页。但是该URL配置不正确,并且页面最终无限地对其自身进行了屏幕抓取,从而导致了堆栈溢出异常。


皈依舞
浏览 445回答 3
3回答

慕桂英546537

我看到的最常见的错误和“池崩溃”是循环调用。public string sMyText{   get {return sMyText;}   set {sMyText = value;}} 只需调用sMyText ...

倚天杖

为了做到这一点,您需要做的就是从请求的上下文外部抛出任何异常(当然不处理它)。例如,在另一个线程上引发的某些异常应该做到这一点: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);}可以在MS知识库中找到更多信息。

慕的地6264312

亚里士多德的回答是好的。当有人在不更改基调用的情况下将重写方法从OnInit更改为OnLoad时,也曾在页面生命周期中使用愚蠢的重写来完成此操作,因此它在整个生命周期中都会循环出现:即protected override void OnLoad(EventArgs e){  //some other most likely rubbish code  base.OnInit(e);}
打开App,查看更多内容
随时随地看视频慕课网APP