Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 有没有一种方法可以通过编程来;“重新启动”;net程序集?_.net_Exception_Gac - Fatal编程技术网

.net 有没有一种方法可以通过编程来;“重新启动”;net程序集?

.net 有没有一种方法可以通过编程来;“重新启动”;net程序集?,.net,exception,gac,.net,Exception,Gac,假设情况:假设我正在开发的ASP.net web系统中使用了一个第三方.net程序集,它偶尔会崩溃。当它这样做时,所有对它的调用都会抛出异常,直到系统重新启动。这显然有点次优 是否有方法仅从异常处理程序重新启动该程序集 (附录:当然,正确的答案是让供应商修复他们的错误。然而,有问题的供应商有点…“不愿意”回复我们的电子邮件。所以,今天早上,这个重新启动组装的想法是作为一块MacGyver eqsue管道胶带产生的。然后我们意识到我们谁也不知道怎么做。)假设。。。回到你的第三方供应商那里,让他们修

假设情况:假设我正在开发的ASP.net web系统中使用了一个第三方.net程序集,它偶尔会崩溃。当它这样做时,所有对它的调用都会抛出异常,直到系统重新启动。这显然有点次优

是否有方法仅从异常处理程序重新启动该程序集


(附录:当然,正确的答案是让供应商修复他们的错误。然而,有问题的供应商有点…“不愿意”回复我们的电子邮件。所以,今天早上,这个重新启动组装的想法是作为一块MacGyver eqsue管道胶带产生的。然后我们意识到我们谁也不知道怎么做。)

假设。。。回到你的第三方供应商那里,让他们修复他们的错误。

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

好的,真正的答案。。。当Web.Config文件更改时,将重新编译应用程序并重置应用程序池

所以,(我讨厌这么说)以编程方式更改web.config文件


顺便说一句,我不建议这样做,这样你就可以把你的反对票留给其他人。

可能是当它奇怪地崩溃时,它仍然让一个活动进程处于活动状态,从而阻止任何后续调用DLL的尝试。如果是这样,您可以通过编程找到它并将其杀死,这可能会修复需要重新启动的问题。

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


当然,这将终止任何活动会话,但如果应用程序实际上崩溃,这可能是可以接受的。

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

这当然是正确答案。这是我们试图在问题上贴一些管道胶带,同时我们试图说服供应商这确实是他们的问题。您是否考虑过您可能没有正确使用第三方组件的可能性?可能您在使用后没有释放资源、内存或sql连接。。。说真的,在做任何激烈的事情之前,我会先检查一下。简单的回答是,是的,我们已经考虑了很久了。这是一个旧的skool COM dll,上面钉着一个(糟糕的).net包装器,内存到处都在泄漏。我们很确定我们已经解决了所有资源问题,而且效果更好,只是不太好。当涉及到糟糕的第三方内容时,一切都是可以原谅的。真正的错误是一开始就选择使用它——一旦犯了错误,你就做你必须做的事情。极端的情况需要采取极端的措施!这正是我一直在寻找的疯狂答案+1当然。是的,为了记录在案,这是我们在我的抗议活动中使用的第三方组件(但是,我自然有责任解决问题。)Crystal Creports?-我知道你不能这么说。在我看来,这比通过编程更改web.config要好。+1因为它比我的解决方案要好。我不知道这个存在。我只是希望我永远不需要它当然,该供应商不是唯一提供此类组件的供应商。也许你能找到另一个更好的支持产品?