【发布时间】:2011-01-03 23:17:27
【问题描述】:
我的一个网站上有一个网络服务,它会重新启动网站应用程序池。
我遇到的问题是 IIS7 应用程序池不断停止并出现以下警告,然后出现错误:
警告: 为应用程序池“appPoolNameHere”提供服务的进程在关闭期间超出了时间限制。
错误: 由于为该应用程序池提供服务的进程中出现一系列故障,应用程序池“appPoolNameHere”被自动禁用。
我用来执行此操作的代码是:
try
{
var serverManager = new ServerManager();
var currentPoolName = SettingsManager.AppPoolName;
if (!string.IsNullOrEmpty(currentPoolName))
serverManager.ApplicationPools[currentPoolName].Recycle();
HttpRuntime.Close();
}
catch (Exception ex)
{
var exceptionManager = ExceptionManagerFactory.GetExceptionManager();
exceptionManager.LogException(ExceptionManager.Severities.Critical, ex,
"App Pool restart failed");
}
我没有在这里抛出任何异常,但是应用程序池正在停止,这种情况不会一直发生并且很难复制,我尝试了几种不同的方法,甚至只是从该服务中打出地狱,有时其他时候它死了也没关系。
有什么办法可以解决这个问题吗?
我必须重新启动它的原因是 webconfig 的外部配置文件处理从管理系统更新的 url 重定向。
感谢您对此的任何帮助。
【问题讨论】:
-
我在上面撒了个谎,我确实收到了一个错误消息:异常消息:访问被拒绝。 (来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED)) 更多信息 应用程序池重新启动失败 异常详细信息 System.UnauthorizedAccessException:访问被拒绝。 (来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))在 Microsoft.Web.Administration.ConfigurationElement.ExecuteMethod(String methodName) 在 Microsoft.Web.Administration.ApplicationPool.Recycle() 在 Microsoft.Web.Administration.Interop.IAppHostMethodInstance.Execute()在 GeneralServices.RestartAppPool()