假设情况:假设我在ASP.Net网络系统中使用了第三方.net程序集,我正在处理它,偶尔会崩溃.当它这样做时,所有对它的调用都会抛出异常,直到系统重新启动.显然,这有点不太理想.
有没有办法从异常处理程序重新启动该程序集?
(附录:当然,这里的正确答案是让供应商修复他们的错误.但是,有问题的供应商有点......"不愿意"回答我们的电子邮件.所以,这重新启动了今天早上的装配理念作为MacGyver-eqsue管道胶带.然后我们意识到我们都不知道怎么做.)
调用HttpRuntime.UnloadAppDomain()将强制应用程序自行终止并在下一个Web请求到达时重新启动.这导致从头开始重新加载所有内容,并且应该消除损坏的程序集数据.
当然,这会杀死任何活动的会话,但如果应用程序基本上崩溃了,这可能是可以接受的.