gpt4 book ai didi

.net - 站点 DLL 似乎在发布时间歇性锁定

转载 作者:行者123 更新时间:2023-12-05 00:14:42 27 4
gpt4 key购买 nike

我尝试通过 VS2017 中的发布上下文菜单将我的 .net 核心站点部署到 Azure,偶尔(大约三分之一的部署),我收到以下错误。

Web deployment task failed. (Web Deploy cannot modify the file 'MyCoreWebSite.dll' on the destination because it is locked by an external process. In order to allow the publish operation to succeed, you may need to either restart your application to release the lock, or use the AppOffline rule handler for .Net applications on your next publish attempt. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE.)

然后我会稍等片刻,再试一次,它就会成功。同时,我将运行 handle实用程序寻找任何锁定 DLL 的东西,但它永远找不到任何东西。

这是一个错误还是我遗漏了一些简单的东西?

最佳答案

ASP.NET Core 不支持文件的影子复制,这意味着 ASP.NET Core 进程 (Kestrel) 将锁定这些文件。您可以解决此问题:

  1. 提供 app_offline.htm发布之前的页面,然后将其删除。我认为发布配置文件 ( <EnableMSDeployAppOffline>true</EnableMSDeployAppOffline> ) 对此有自动支持。但如果需要,您可以使用自定义部署脚本来完成。在 ASP.NET Core 1.x 中,我还必须在 Startup.cs 文件中添加一个文件监视任务以关闭当前进程。我不知道 ASP.NET Core 2.0 是否仍然需要它。
  2. 1. 的缺点是您的网站在发布期间将处于离线状态。如果您不希望您可以使用站点的副本:将所有文件复制到子目录(例如 \PREVIOUS),更改 web.config 中的标记,使其指向新文件中的 .exe子目录。现在您的根目录中的所有锁都应该消失了...发布您的站点并随后再次更改 web.config。
  3. 如果您的网站是负载平衡的,您当然可以从池中取出一台服务器,更新它并在完成后将其添加回池中。

关于.net - 站点 DLL 似乎在发布时间歇性锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46454514/

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