Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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
C# IIS应用程序能否回收自己的应用程序池?_C#_Iis_Web Applications_Singleton_Recycle - Fatal编程技术网

C# IIS应用程序能否回收自己的应用程序池?

C# IIS应用程序能否回收自己的应用程序池?,c#,iis,web-applications,singleton,recycle,C#,Iis,Web Applications,Singleton,Recycle,我有一个IIS应用程序,它有一个长寿命的单例。在极少数情况下,当尝试获取资源时,此单例挂起。众所周知,回收应用程序池将导致资源再次可用。假设应用程序本身可以使用秒表或类似工具捕获此罕见事件,那么在执行此操作时,应用程序本身中的事件处理程序是否可以回收应用程序池?这是一件很严重的事情,但总比让它挂起直到下一次IIS计划回收要好。挂起的原因与该资源及其与IIS的交互有关,我没有办法解决这个问题。注意,获取资源的调用是同步的。如果是,请提供如何这样做的信息 对评论的回应 根据我的观察,重新启动应用程序

我有一个IIS应用程序,它有一个长寿命的单例。在极少数情况下,当尝试获取资源时,此单例挂起。众所周知,回收应用程序池将导致资源再次可用。假设应用程序本身可以使用秒表或类似工具捕获此罕见事件,那么在执行此操作时,应用程序本身中的事件处理程序是否可以回收应用程序池?这是一件很严重的事情,但总比让它挂起直到下一次IIS计划回收要好。挂起的原因与该资源及其与IIS的交互有关,我没有办法解决这个问题。注意,获取资源的调用是同步的。如果是,请提供如何这样做的信息

对评论的回应 根据我的观察,重新启动应用程序域是挂起的原因之一。资源是一个不规则的本机dll,由非我自己的代码加载。也许我找到了一个API来卸载和加载不规则的非托管dll。但就目前而言,我一直在手动(而不是编程)回收应用程序池以恢复操作


在回收应用程序池时,将调用Singleton的析构函数,在调用外部API Dispose()后,其中的资源将处于良好状态,可能已卸载,但我尚未验证。

您已经排除回收应用程序域的可能性?可能重复@CoryCharlton是,这可能是重复,但我认为这可能是不同的,请让我知道,因为它询问的是一个应用程序回收其父池,而不是第三方这样做。请帮我理解。我是否应该让我的应用程序循环使用应用程序池,看看它是如何工作的?@subsci是的,我会尝试实现该示例中显示的代码来重新启动应用程序池。正如@Jason提到的,回收应用程序域可能更容易,并且可能符合您的需要。也可以从链接的可能的副本:
HttpRuntime.UnloadAppDomain()
你已经排除了回收应用程序域的可能性?可能重复@CoryCharlton是的,这可能是重复的,但我认为这一个可能不同,请让我知道,因为它询问有关回收其父池的应用程序,而不是第三方这样做。请帮我理解。我是否应该让我的应用程序循环使用应用程序池,看看它是如何工作的?@subsci是的,我会尝试实现该示例中显示的代码来重新启动应用程序池。正如@Jason提到的,回收应用程序域可能更容易,并且可能符合您的需要。也可以从链接的可能的副本:
HttpRuntime.UnloadAppDomain()