IIS无法重新启动,并显示超时错误

时间:2018-11-14 15:14:08

标签: c# asp.net iis timeout

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

  

程序集'C:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ASP.NET
  Files \ root \ a18f28ce \ a6daf424 \ App_Code.dll'已加载到另一个应用程序域中。

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

  

超时错误。 W3SVC无法启动。

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

关于如何解决IIS超时错误或(理想情况下)如何首先避免“已加载到另一个应用程序域中”错误​​的任何想法?

3 个答案:

答案 0 :(得分:1)

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

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

IIS会为所有请求返回App_Offline.htm文件中放置的所有内容,直到您删除该文件为止。

答案 1 :(得分:0)

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

  

iisreset

  

iisreset / stop

     

然后

     

iisreset / start

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

答案 2 :(得分:0)

  

转到任务管理器->进程,然后手动停止W3SVC进程。   完成此操作后,重新启动IIS时该过程应正常启动

注意:它也可能是Svchost进程

  

转到“进程”以找到合适的svchost终止