将新DLL上传到asp.net BIN文件夹会导致IIS 7使服务不可用

我的Windows Server 2008 R2 Web服务器上有一个asp.net 4电子商务网站。 我上传一个更新的DLL到/ bin文件夹,当然这个站点重新编译。 这是一个网站项目,而不是Web应用程序。 更多次不是站点不会回来,我会得到一个服务不可用的错误(503我认为)。 我必须将RDP放入服务器并执行IISRESET以将其恢复。 不幸的是,这会在服务器上循环一切

为什么会发生这种情况,我该如何预防呢? 如何在/ bin文件夹更改时成功重新编译网站,并且没有IIS超时或任何导致此错误的内容?

谢谢。

这是ASP.NET和部署之间的竞争条件。 当第一个应用程序文件或文件夹被触摸时,将会有一个应用程序域回收,这将在部署期间快速连续发生。 如果结束的顺序不正确,ASP.NET可能会被抛出并保持断开状态。 这在大多数应用程序中不会发生,但是对于一些应用程序而言,特别是那些在部署过程中处于高负载的大型站点。

解决的办法是在完成所有事情之后“触摸”你的web.config文件。 这将导致一个appdomain回收你的网站,并不需要在整个服务器上重置。 通过触摸,在部署完成后再次上传web.config。

另一个选项是在部署期间使用App_Offline.htm。

以下是我在AppDomain上发布的一些video博客和本地化回收,您可能会发现它们很有用:

  • AppDomains – 它们是什么以及它们为什么重要
  • IIS重叠应用程序池 (讨论w3wp.exe工作进程的完整回收,这是执行完整iisreset之前的另一个选项)

你注册了dll吗? Regsvr32和DLL的path。 如果它是32位的,你会想要在syswow64文件夹中使用regsvr32.你可以做的另一件事是在IIS中启用失败的请求跟踪,以确定究竟在哪里以及是什么问题。 希望这可以帮助