我正在尝试将 .NET Web 应用程序部署到 IIS (7.5),而不会给用户带来任何麻烦。我已经确定禁用重叠回收是错误的,但我每次仍然遇到同样的问题。
每次我为站点上传新的二进制文件时,IIS 都会在工作进程启动新进程之前终止它。因此,每次我上传新的二进制文件时,用户都会收到以下错误消息:
“/”应用程序中的服务器错误。无法加载文件或程序集“MyApplicationWeb”或其依赖项之一。该进程无法访问该文件,因为它正被另一个进程使用。(来自 HRESULT 的异常:0x80070020)
我不知道如何无缝地做到这一点。现在我只是上传二进制文件;但是当上传发生(或本地副本)时,它会给出上面引用的行为。我也尝试使用网络花园,但结果相同。
我不是在寻找什么:
- 如何使用外部负载平衡器解决它(这是一个功能性解决方案,但它对于少数服务器来说是一个糟糕的解决方案,如果只有一个服务器,它根本无法工作)
- 如何在自定义错误页面中通过刷新创建 hack-around(因为它有一些明显的问题,但更重要的是根本无法使用 Web 服务/ajax)。
更新:在上面的文章中,他们说:
但是,由于关闭或启动的关闭超时值是可配置的,因此如果工作进程未在时间限制内完成对现有请求的服务,则可以在它仍在为请求提供服务时终止它。
我不知道在哪里可以找到这个值,也不知道它是什么默认值。如果它少于几秒钟,它可能会解释我的结果。
附言。我将它发布在 SO 而不是 SF/Webmasters 等上,因为我认为这种知识对于那些不积极参与开发的人来说可能是最少的,我希望这没关系。