IIS 无法重新启动并出现超时错误
IIS fails to restart with a timeout error
当我们将新代码发布到生产环境时,我们经常需要更新 App_Code 目录中的 .cs 文件。通常,如果在生产中有任何用户(总是有一些,甚至是一夜之间),我们会在任何应用程序页面加载时收到错误消息:
The assembly 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET
Files\root\a18f28ce\a6daf424\App_Code.dll' is already loaded in another appdomain.
我们发现让应用程序再次响应的唯一方法是重新启动 IIS。现在的问题是,IIS 经常无法恢复。我们通过进入 IIS 管理器,单击服务器名称,然后单击右侧的重新启动来重新启动 IIS。系统会思考几秒,然后报错:
Timeout error. W3SVC failed to start.
此时唯一的解决方案是重启服务器,我们希望在生产服务器上避免这种情况。
关于如何解决 IIS 超时错误或(理想情况下)如何首先避免 "already loaded in another appdomain" 错误的任何想法?
尝试使用命令提示符(管理员)重新启动 IIS:
iisreset
或
iisreset /stop
and then
iisreset /start
注意:可能需要重启worker进程
Go to Task Manager --> Processes and manually stop the W3SVC process.
After doing this the process should start normally when restarting IIS
注意:也可能是Svchost进程
Go To Process to find the right svchost to terminate
上述问题的 easier/automatic 解决方案是在部署过程中使用 ~/App_Offline.htm 文件(IIS 内置的一项功能,因此 WebDeploy 可以避免文件锁定问题)。
修改您的部署过程,以便第一步是在 webroot 中创建 App_Offline.htm
。 IIS 将检测到此文件并立即关闭应用程序域 - 释放所有锁定等。正常部署您的应用程序,没有任何锁定问题,完成后,删除 App_Offline。 IIS 收到的下一个请求将启动应用域加载您新部署的版本。
IIS 会针对所有请求返回您放入 App_Offline.htm 文件中的任何内容,直到您删除该文件。
当我们将新代码发布到生产环境时,我们经常需要更新 App_Code 目录中的 .cs 文件。通常,如果在生产中有任何用户(总是有一些,甚至是一夜之间),我们会在任何应用程序页面加载时收到错误消息:
The assembly 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET
Files\root\a18f28ce\a6daf424\App_Code.dll' is already loaded in another appdomain.
我们发现让应用程序再次响应的唯一方法是重新启动 IIS。现在的问题是,IIS 经常无法恢复。我们通过进入 IIS 管理器,单击服务器名称,然后单击右侧的重新启动来重新启动 IIS。系统会思考几秒,然后报错:
Timeout error. W3SVC failed to start.
此时唯一的解决方案是重启服务器,我们希望在生产服务器上避免这种情况。
关于如何解决 IIS 超时错误或(理想情况下)如何首先避免 "already loaded in another appdomain" 错误的任何想法?
尝试使用命令提示符(管理员)重新启动 IIS:
iisreset
或
iisreset /stop
and then
iisreset /start
注意:可能需要重启worker进程
Go to Task Manager --> Processes and manually stop the W3SVC process. After doing this the process should start normally when restarting IIS
注意:也可能是Svchost进程
Go To Process to find the right svchost to terminate
上述问题的 easier/automatic 解决方案是在部署过程中使用 ~/App_Offline.htm 文件(IIS 内置的一项功能,因此 WebDeploy 可以避免文件锁定问题)。
修改您的部署过程,以便第一步是在 webroot 中创建 App_Offline.htm
。 IIS 将检测到此文件并立即关闭应用程序域 - 释放所有锁定等。正常部署您的应用程序,没有任何锁定问题,完成后,删除 App_Offline。 IIS 收到的下一个请求将启动应用域加载您新部署的版本。
IIS 会针对所有请求返回您放入 App_Offline.htm 文件中的任何内容,直到您删除该文件。