ste*_*fan 13 asp.net deployment iis worker-process
我正在尝试将.NET Web应用程序部署到IIS(7.5),而不会给用户带来任何麻烦.我确保禁用重叠回收是错误的,但我每次都遇到同样的问题.
每次我为站点上传新的二进制文件时,IIS都会在启动新进程之前终止该进程.所以每次上传新的二进制文件时,用户都会收到以下错误消息:
'/'应用程序中的服务器错误.无法加载文件或程序集"MyApplicationWeb"或其依赖项之一.该进程无法访问该文件,因为该文件正由另一个进程使用.(HRESULT异常:0x80070020)
我不知道如何无缝地做到这一点.现在我只是上传二进制文件; 但是当上传发生时(或本地副本),它将给出上述引用的行为.我也尝试使用Web园,但结果相同.
我不想要的:
更新:在上面的文章中他们说:
但是,由于关闭或启动的关闭超时值是可配置的,因此如果工作进程在时间限制内未完成为现有请求提供服务,则它仍可在服务请求时终止.
我不知道在哪里可以找到这个值,也不知道它是什么默认值.如果它少于几秒钟就可以解释我的结果.
PS.我发布它是在SO而不是SF /网站管理员等,因为我认为这种知识可能在那些不积极参与开发的人中很少,我希望这是可以的.
det*_*lor 17
部署ASP.Net应用程序时,我在服务器上创建一个新文件夹,并在IIS中更改网站的主目录.这可以在出现无法预料的问题时提供零停机时间部署和快速回滚位置.在将来的更新中,我废弃旧版本并重复该过程,以便始终存在单个回滚位置.
有关为工作人员配置关闭时间限制的详细信息,请参见http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/add/processModel.默认值为1分30秒.在链接页面中查找shutdownTimeLimit部分.
这样做的要点是,由于覆盖现有文件,复制机制对文件进行独占锁定,并且不使用app_offline.htm或上述建议的机制就无法进行无缝部署.阅读相关答案,因为它更深入.