部署 Azure Web 应用后,出现网站正在建设中的消息

35

我在使用Visual Studio WebDeploy将Web应用程序发布到Azure时发生了网络故障。稍后我再次尝试,然后出现了以下错误消息。

错误5 Web部署任务失败。(由于外部进程锁定,Web Deploy无法修改目标上的“NewRelic.Agent.Core.dll”文件。为了允许发布操作成功,您可能需要重新启动应用程序以释放锁定,或在下一次发布尝试中使用.NET应用程序的AppOffline规则处理程序。了解更多信息: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE。)0 0 ABCD.ABCD.ABCD.ABCD

所以我重启了我的Web应用程序几次,但是仍然出现相同的异常。然后我尝试使用FTP,但也失败了。几分钟后,我再次尝试使用Visual Studio Web Deploy进行发布,然后发布成功了。但现在我遇到了503错误-网站正在建设中。有什么想法吗?

注意:我也尝试过AppOffline,但没有希望。


错误信息已经告诉你问题所在了。也许dll文件在远程服务器上被锁定了。你是如何使用这个dll的?也许你在创建dll实例和释放资源方面存在问题。在我看来,如果没有看到你现有代码的话,很难确定具体情况。 - MethodMan
我正在使用New Relic进行Web应用程序分析。我的代码没有任何问题。直到今天早上一切正常运行。但是,在部署失败之后(由于网络问题),我无法再次成功地将其部署。 - Manu Mohan
你不能假定它是无法工作的,但是如果它刚开始出现问题..那么我建议您联系ISP,并询问是否可以重新启动与IIS或其他类型的Web服务器相关的进程。此外,是否有一种方法可以附加到远程进程..? - MethodMan
3
谢谢您的时间 :)。我解决了我的问题。解决方案是删除因我添加了应用程序离线规则到发布配置文件而在根目录创建的离线HTML文件:D 很抱歉打扰您。 - Manu Mohan
1
我遇到了完全相同的问题。你的评论帮了我很多,可以将其发布为已接受的答案。 - Kostub Deshmukh
我将其作为下面的答案发布了。 - Manu Mohan
5个回答

68

我解决了我的问题。解决方法是从根目录(服务器上)中删除离线html文件(APP_OFFLINE.html),该文件是由于我添加的应用程序离线规则而创建的。

实际问题是:在您的发布配置文件中设置了 <EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>,该设置实际上是在部署过程中让您的应用程序脱机。在完成部署后,MSDeploy 工具应自动删除 APP_OFFLINE.html,但在上述情况下未能如此。

因此,我建议您查看您的网站根目录,如果有名为 APP_OFFLINE.html 的文件,请将其删除。


我遇到了同样的问题,并且正在搜索本地目录中的offline.html文件。但是该文件实际上在 Azure 服务器上... - kabaehr
3
@kabaehr 是的,app_offline.html将被上传到您应用程序在服务器上的目录中。 - Manu Mohan
在 Azure Functions 应用程序中遇到了同样的问题。删除 APP_OFFLINE.htm,然后一切正常。(Azure 存储资源管理器使查找和删除文件变得轻而易举。) - System.Cats.Lol
这样的文件是怎么出现的? - President Camacho
@PresidentCamacho 这是你的发布配置文件导致的。在你的发布配置文件中,会有一个 <EnableMSDeployAppOffline>true</EnableMSDeployAppOffline> 的部分,它实际上用于在部署时将你的应用程序下线。完成部署后,MSDeploy 工具应该会自动删除它。但是,在上述情况下,某种原因导致它没有被删除。 - Manu Mohan
1
谢谢!尽管部署成功,但很难找出为什么会发生这种情况! - Dhrumil Bhankhar

15
这次停机的罪魁祸首是app_offline.htm文件。这是Azure Kudu服务已知的一个bug,会间歇性地无法从服务器中删除app_offline.htm文件 - https://github.com/projectkudu/kudu/issues/2949
一旦网站升级完成,此文件会被添加以暂时关闭网站,但无法始终如一地将其删除。截至2019年11月,该bug仍未解决。
有一个简单的解决方法:
1.在Azure中打开您的应用程序服务。在左侧面板上滚动并找到“高级工具”。单击进入,这将带您到应用程序服务的Kudu服务页面。
2.在导航栏上,单击“工具”>“Zip推送部署”。
3.在列表中将会出现一个名为app_offline.htm的文件。
4.单击其左侧的删除按钮并将其删除。就这样!您的应用程序现在应该可以正常运行了。
永久解决方案是:
告诉Kudu根本不要创建此文件,通过在您的应用程序设置中添加键SCM_CREATE_APP_OFFLINE并将值设置为0来实现。

这不是一个“永久解决方案”,而是一种变通方法。有些人希望在部署时将他们的应用程序下线。 - Manu Mohan
1
永久解决方案将是修复 https://github.com/projectkudu/kudu/issues/2949 :) - Nameless

1

今天我遇到了这个问题,是通过ADO CI/CD自动部署的。看起来上一次部署因为Web应用程序本身的.exe文件出现ERR_FILE_IN_USE错误而失败了,所以回滚似乎没有成功。


0
我发现,当我收到“构建成功”电子邮件时,我打开浏览器并访问网站。它显示“网站正在建设中”。我等待了5分钟,然后刷新。它正确加载了。 看起来有时候启动需要比平常更多的时间。

0

这个错误可能会在使用发布配置文件从Visual Studio发布并且发布失败时发生。

解决方案是解决发布错误。

在我的情况下,错误与被锁定的文件有关。在发布之前停止应用程序服务可以解决此问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接