Azure网站发布失败文件正在使用中

问题描述 投票:3回答:6

我有一个Web应用程序,我将发布到Azure网站。有时会发布没有问题。但是,通常情况下,它会在特定的二进制文件(业务逻辑dll之一)上失败,表明该文件正在使用中。快速google之后;看来这意味着该文件正在服务器端使用。这很奇怪,因为当时没有针对此Web应用程序发出请求。

是否有一些配置选项我需要设置某个地方强制卸载dll?我以前发布过Azure网站,从未见过这个。

web-applications azure publish azure-web-sites
6个回答
1
投票

您应该首先了解一下IIS和Web Deploy。

看看this SO Question它是否基本上描述了你所遇到的问题。一般来说,使用组件有点奇怪。不知道确切的原因,但它在你的装配中存在,更重要的是如何使用它。

作为建议 - 在部署(停止和启动)之前回收站点。或者在站点停止时尝试部署(我怀疑是可能的)。


1
投票

我们曾经有过类似的情况。它使用以下步骤解决。

  • 从门户网站停止该站点
  • 使用FileZilla等客户端FTP进入网站。您可以通过查找publishMethod =“FTP”部分从发布配置文件中获取FTP URL和凭据。
  • 导航到site / wwwroot文件夹
  • 删除锁定的文件
  • 启动网站
  • 立即从门户中的部署选项卡重新部署站点。

0
投票

唯一对我有用的解决方案:删除站点,然后重新部署(使用相同的名称)。 FTP信誉继续发挥作用。

我试过的其他东西不起作用:

  • 停止网站并尝试通过FTP或Kudu命令行删除(或重命名)锁定的程序集。获得访问被拒绝错误通过Kudu杀死w3wp。大会保持锁定。将DLL重命名为其他文件并重新部署。不知怎的,应用程序不会启动说它无法访问锁定的文件,即使其他任何程序集都不应再引用它。

0
投票

查看How to take web app offline while publishing以获得可能的解决方案。基本上包括

<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>

在您的pubxml文件中应该可以缓解这个问题。但请注意,这可能无法在所有情况下正常工作,尤其是对于ASP.NET核心,this thread on GitHub证明了这一点。


0
投票

显然,在发布时上传到服务器的App_Offline.htm文件实际上应该命名为app_offline.htm(即小写)。系统不以不区分大小写的方式识别文件是一个错误(在this GitHub issue中的某个时刻被识别)。

因此,如果将<EnableMSDeployAppOffline>True</EnableMSDeployAppOffline>添加到.pubxml文件中不起作用,并且也没有重新启动Azure Web应用程序,请尝试将App_Offline.htm重命名为app_offline.htm并再次发布。它应该工作。

PS:这个bug应该在2017年1月下旬在.NET Core中修复(参见链接的问题),但我无法弄清楚问题是Azure中的.NET版本还是别的(this thread没有帮助我) 。如果你正在读这篇文章,我还没想出来,我每次都在重命名文件。 :p如果您知道必须采取哪些措施来解决这个问题,请发表评论!


0
投票

您可以使用多种类型的解决方案

  1. 从azure中删除现有文件。
  2. 更改天蓝色配置设置 MSDEPLOY_RENAME_LOCKED_FILES = 1
  3. 如果你不想删除该文件,那么你可以停止服务例如(Webjobs)。 WEBJOBS_STOPPED = 1
© www.soinside.com 2019 - 2024. All rights reserved.