为了账号安全,请及时绑定邮箱和手机立即绑定

如何崩溃应用程序池?

如何崩溃应用程序池?

皈依舞 2019-11-20 14:08:56
我们的ASP.NET 2 Web应用程序非常优雅地处理异常。我们在Application_Error中捕获Global ASAX中的异常。从那里,我们记录异常和我们展示了一个友好的信息给用户。但是,今天早上,我们部署了网站的最新版本。运行了半个小时,但随后应用程序池崩溃了。在我们还原了以前的版本之前,该站点没有恢复。如何使应用程序池崩溃并跳过普通的异常处理程序?我正在尝试复制此问题,但到目前为止还没有运气。更新:我们找到了解决方案。我们的其中一页正在抓屏另一页。但是该URL配置不正确,并且页面最终无限地对其自身进行了屏幕抓取,从而导致了堆栈溢出异常。
查看完整描述

3 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

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


public string sMyText

{

   get {return sMyText;}

   set {sMyText = value;}

只需调用sMyText ...



查看完整回答
反对 回复 2019-11-20
?
倚天杖

TA贡献1828条经验 获得超3个赞

为了做到这一点,您需要做的就是从请求的上下文外部抛出任何异常(当然不处理它)。


例如,在另一个线程上引发的某些异常应该做到这一点:


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知识库中找到更多信息。


查看完整回答
反对 回复 2019-11-20
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

亚里士多德的回答是好的。当有人在不更改基调用的情况下将重写方法从OnInit更改为OnLoad时,也曾在页面生命周期中使用愚蠢的重写来完成此操作,因此它在整个生命周期中都会循环出现:即


protected override void OnLoad(EventArgs e)

{

  //some other most likely rubbish code

  base.OnInit(e);

}


查看完整回答
反对 回复 2019-11-20
  • 3 回答
  • 0 关注
  • 440 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信