假设情况:假设我在ASP.Net网络系统中使用了第三方.net程序集,我正在处理它,偶尔会崩溃。当它这样做时,所有对它的调用都会抛出异常,直到系统重新启动。显然,这有点不太理想。
有没有办法从异常处理程序重启该程序集?
(附录:当然,这里的正确答案是让供应商修复他们的错误。但是,有问题的供应商有点......“不愿意”回答我们的电子邮件。所以,重新启动组装的想法来了关于今天早上作为MacGyver-eqsue管道胶带。然后我们意识到我们都不知道该怎么做。)
答案 0 :(得分:7)
调用HttpRuntime.UnloadAppDomain()将强制应用程序自行终止并在下一个Web请求到达时重新启动。这导致从头开始重新加载所有内容,并且应该消除损坏的程序集数据。
当然,这会终止所有活动会话,但如果应用程序基本上已崩溃,那么这可能是可以接受的。
答案 1 :(得分:4)
你可以回收应用程序池,但是这会启动所有当前用户并丢失他们的会话信息 - 如果网站已被坏dll冲洗,这可能无关紧要
答案 2 :(得分:4)
好的,真正的答案......当Web.Config文件发生变化时,应用程序会重新编译并重置应用程序池。
所以,(我不想这么说)以编程方式更改你的web.config文件。
顺便说一句,我不建议这样做,所以你可以为别人保存你的投票。答案 3 :(得分:2)
假设......回到第三方供应商并让他们修复他们的错误。
答案 4 :(得分:0)
可能是当它崩溃时,它仍然会使活动进程保持活动状态,这会阻止任何后续尝试调用DLL。如果是这样,您可以以编程方式找到它并将其删除,这可能会解决需要重新启动的问题。
答案 5 :(得分:0)
除了修改web.config之外,您还可以在bin文件夹中创建任意文件。这将重新启动您的应用程序。