gpt4 book ai didi

asp.net - 在 ASP.NET 中无缝部署(IIS 在新工作进程准备好之前杀死工作进程)

转载 作者:行者123 更新时间:2023-12-03 23:23:50 25 4
gpt4 key购买 nike

我正在尝试将 .NET Web 应用程序部署到 IIS (7.5),而不会给用户带来任何麻烦。我已经确定 禁用重叠回收是错误的 但我每次仍然遇到同样的问题。

每次我为站点上传新的二进制文件时,IIS 都会在工作进程启动新进程之前终止它。因此,每次我上传新的二进制文件时,用户都会收到此错误消息:

Server Error in '/' Application. Could not load file or assembly 'MyApplicationWeb' or one of its dependencies. The process cannot access the file because it is being used by another process. (Exception from HRESULT: 0x80070020)



我不知道如何无缝地做到这一点。现在我只是上传二进制文件;但是当上传发生(或本地复制)时,它会给出上面引用的行为。我也尝试使用网络花园,但结果相同。

我不是在寻找什么:
  • 如何使用外部负载平衡器解决它(这是一个功能性的解决方案,但对于少数服务器来说这是一个糟糕的解决方案,如果只有一台服务器,它根本无法工作)
  • 如何在自定义错误页面中通过刷新创建一个 hack-around(因为它有一些明显的问题,但更重要的是,它根本不适用于 Web 服务/ajax)。

  • 鉴于 http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/24e3c22e-79a9-4f07-a407-dbd0e7f35432.mspx?mfr=true,我真的认为这应该是可行的

    更新:
    在上面的文章中,他们说:

    However, because the shutdown timeout value of a shutdown or startup is configurable, the worker process can be terminated while it is still serving requests if it does not finish servicing existing requests within the time limit.



    我不知道在哪里可以找到这个值,也不知道它是什么默认值。如果它少于几秒钟,它可能会解释我的结果。

    附:我将它发布在 SO 而不是 SF/Webmasters 等上,因为我认为这种知识在不积极参与开发的人中可能很少,我希望这没问题。

    最佳答案

    部署 ASP.Net 应用程序时,我在服务器上创建一个新文件夹并更改 IIS 中网站的主目录。这提供了零停机部署和在出现不可预见的问题时的快速回滚位置。在 future 的更新中,我废弃旧版本并重复该过程,以便始终有一个回滚位置。
    更新 - 关机时间限制
    http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/add/processModel 中详细介绍了为工作人员配置关闭时间限制的详细信息。 .默认值为 1 分 30 秒。在链接页面中查找 shutdownTimeLimit 部分。
    更新 - 更多信息
    Similar question with a great answer
    其要点是,由于覆盖现有文件,复制机制对文件进行了独占锁定,并且在不使用 app_offline.htm 或上述建议的机制的情况下不可能进行无缝部署。阅读链接的答案,因为它更深入。

    关于asp.net - 在 ASP.NET 中无缝部署(IIS 在新工作进程准备好之前杀死工作进程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5358020/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com