C# IIS无法重新启动,出现超时错误

C# IIS无法重新启动,出现超时错误,c#,asp.net,iis,timeout,C#,Asp.net,Iis,Timeout,当我们将新代码发布到生产环境中时,我们通常需要更新App_code目录中的.cs文件。通常,如果生产中有任何用户(而且总是有一些,甚至是一夜之间),我们会在任何应用程序页面加载上收到一条错误消息: 程序集“C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET 文件\root\a18f28ce\a6daf424\App_Code.dll'已加载到另一个appdomain中 我们发现让应用程序再次响应的唯一方法是重新启动I

当我们将新代码发布到生产环境中时,我们通常需要更新App_code目录中的.cs文件。通常,如果生产中有任何用户(而且总是有一些,甚至是一夜之间),我们会在任何应用程序页面加载上收到一条错误消息:

程序集“C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET
文件\root\a18f28ce\a6daf424\App_Code.dll'已加载到另一个appdomain中

我们发现让应用程序再次响应的唯一方法是重新启动IIS。现在的问题是,IIS经常无法恢复。我们通过进入IIS管理器,单击服务器名称,然后单击右侧的重新启动来重新启动IIS。系统将思考几秒钟,然后给出错误:

超时错误。W3SVC无法启动

此时唯一的解决方案是重新启动服务器,这是我们希望在生产服务器上避免的


关于如何排除IIS超时错误,或者(理想情况下)如何首先避免“已加载到另一个appdomain”错误,您有什么想法吗?

尝试使用以下命令从命令提示符(管理员)重新启动IIS:

iisreset

IIS设置/停止

然后

IIS设置/启动

注意:可能需要重新启动工作进程

转到任务管理器-->进程并手动停止W3SVC进程。 执行此操作后,重新启动IIS时,进程应正常启动

注意:它也可能是Svchost进程

转到进程以查找要终止的正确svchost


解决上述问题的一个更简单/自动的解决方案是在部署过程中使用~/App_Offline.htm文件(这是一项嵌入IIS的功能,因此WebDeploy可以避免文件锁定问题)

修改部署过程,以便第一步是在webroot中创建
App\u Offline.htm
。IIS将检测到此文件并立即关闭应用程序域-释放所有锁等。正常部署应用程序,无任何锁定问题,完成后,脱机删除应用程序。IIS收到的下一个请求将启动应用程序域加载新部署的版本


无论您在App_Offline.htm文件中放置什么内容,IIS都会返回所有请求,直到您删除该文件。

这是一个很棒的主意。我不知道有这样一个特点。非常感谢。