有没有办法以编程方式“重启”.net程序集?

时间:2008-11-13 18:50:31

标签: .net exception gac

假设情况:假设我在ASP.Net网络系统中使用了第三方.net程序集,我正在处理它,偶尔会崩溃。当它这样做时,所有对它的调用都会抛出异常,直到系统重新启动。显然,这有点不太理想。

有没有办法从异常处理程序重启该程序集?

(附录:当然,这里的正确答案是让供应商修复他们的错误。但是,有问题的供应商有点......“不愿意”回答我们的电子邮件。所以,重新启动组装的想法来了关于今天早上作为MacGyver-eqsue管道胶带。然后我们意识到我们都不知道该怎么做。)

6 个答案:

答案 0 :(得分:7)

调用HttpRuntime.UnloadAppDomain()将强制应用程序自行终止并在下一个Web请求到达时重新启动。这导致从头开始重新加载所有内容,并且应该消除损坏的程序集数据。

当然,这会终止所有活动会话,但如果应用程序基本上已崩溃,那么这可能是可以接受的。

答案 1 :(得分:4)

你可以回收应用程序池,但是这会启动所有当前用户并丢失他们的会话信息 - 如果网站已被坏dll冲洗,这可能无关紧要

答案 2 :(得分:4)

好的,真正的答案......当Web.Config文件发生变化时,应用程序会重新编译并重置应用程序池。

所以,(我不想这么说)以编程方式更改你的web.config文件。

顺便说一句,我不建议这样做,所以你可以为别人保存你的投票。

答案 3 :(得分:2)

假设......回到第三方供应商并让他们修复他们的错误。

答案 4 :(得分:0)

可能是当它崩溃时,它仍然会使活动进程保持活动状态,这会阻止任何后续尝试调用DLL。如果是这样,您可以以编程方式找到它并将其删除,这可能会解决需要重新启动的问题。

答案 5 :(得分:0)

除了修改web.config之外,您还可以在bin文件夹中创建任意文件。这将重新启动您的应用程序。