加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – IIS池循环,池重启,应用程序重启,web.config更新 – 全局as

发布时间:2020-12-15 21:28:42 所属栏目:百科 来源:网络整理
导读:我在IIS 7下运行MVC3 Web应用程序.在global.asax应用程序初始化期间,扫描BuildManager.GetReferencedAssemblies()返回的所有程序集,以及这些程序集中的所有类型(Assembly.GetTypes())以执行初始化操作. 应用程序有时会停止正常工作 – 它的行为就像初始化从
我在IIS 7下运行MVC3 Web应用程序.在global.asax应用程序初始化期间,扫描BuildManager.GetReferencedAssemblies()返回的所有程序集,以及这些程序集中的所有类型(Assembly.GetTypes())以执行初始化操作.

应用程序有时会停止正常工作 – 它的行为就像初始化从未发生过,或者某些类型在启动期间被忽略.一旦应用程序进入此失败状态(我认为它在池被回收后发生),它将一直保持这种状态,直到重新启动:

>手动更新Web.Config(添加一些空格)
>在IIS管理器中手动重新启动应用程序
>在IIS管理器中手动停止和启动应用程序池
>自动池回收

我注意到1.总是有帮助,但是2,3,4不确定地起作用 – 至少就我所说的而言,因为问题的本质不是确定性的 – 应用程序仅在一些预定的回收之后崩溃.
从global.asax代码和加载程序集的访问角度来看,1和2,4有什么区别?

哦,如果它改变了什么,应用程序作为子应用程序(IIS站点树中的子文件夹)运行.

解决方法

我相信你的问题可以通过保存一些状态信息来解决,这样应用程序可以知道它的启动是否成功.

每当应用程序检查时,都会错误地初始化它,它应该重新初始化它或抛出异常并重新启动应用程序.

给你一个解决方案真的很难,但总结一下你可以做到这一点:

>跟踪初始化.
>不要让应用程序在意外状态下运行.
>仔细检查代码中某处是否有某些非托管资源未被释放(可能是文件流,数据库连接……?).
>记录,记录,记录……

直接回答你的问题:

> Recycles应用程序池.

> HttpApplication(Global.asax)触发应用程序初始化事件(Start事件).

> Recycles应用程序池.

> HttpApplication(Global.asax)触发应用程序初始化事件(Start事件).

>基本上,停止所有传入请求的应用程序,直到再次启动它.基本上,一个硬应用程序池回收.

> HttpApplication(Global.asax)触发应用程序初始化事件(Start事件).

> Recycles应用程序池.

> HttpApplication(Global.asax)触发应用程序初始化事件(Start事件).

基本上,这些动作中的任何一个都会产生相同的结果.

您是否尝试过重置IIS – iisreset / restart命令 – ?这应该释放任何锁定的资源,并停止任何不需要的循环,线程或任何崩溃您的应用程序的事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读