我正在使用一个ASP.NET MVC(5/. NET Fx 4. 8)应用程序,该应用程序已经部署到Azure Web Apps 7年多了。昨天,我注意到我只能从单个计算机上的单个分支或更早的代码发布到Azure Web Apps。
Visual Studio报告部署成功,但几秒钟后输出窗口中出现一条消息:A call to warmup your site failed with response code: 'Forbidden'.
当我从工作计算机和工作分支进行部署时,一切又都很好了。
我很难理解我是如何理解这一点的。代码在两台计算机上是相同的(根据源代码控制)。重申一下,在一台计算机上,我有两个分支。一个分支在部署后工作,另一个不工作。
以下是一些补充意见:
- 我在工作分支和非工作分支之间运行了一个文件夹比较,发现唯一的区别是二进制文件和包含源代码文件路径的文件。
- 在导致403错误("失败的部署")的部署之后,对静态文件的请求仍然有效。
- 部署失败后,当我通过FTPS访问站点时,一切看起来都很正常。
我唯一能想到的是包发生了一些变化(所有的新分支和新设备都会从NuGet中提取包;其他PC较老的分支机构可能已经缓存了它们;包不在源代码管理中)。
我试过FTP发布,它是从"坏掉的"分支开始工作的,但是它要慢得多,所以最好弄清楚Web发布方法的问题是什么。
谢谢你的帮助。
- 编辑**
部署"失败"时,浏览器将显示以下错误消息:You do not have permission to view this directory or page.
没有其他内容,只有那一行文本。
- 编辑2**
当我在App Service中查看应用程序日志流时,我看到一个更详细的错误页,其中显示特定的HTTP错误为403. 14。可能是Web服务器试图将该站点视为静态站点,而不是使用ASP.NET路由。
我再次比较了可以工作的分支和不能工作的分支的文件内容,web.config、global.asax等的内容是相同的。
1条答案
按热度按时间fnvucqvd1#
我已经从2台不同的机器将
ASP.NET MVC
应用程序部署到Azure Web,没有任何问题。A call to warmup your site failed with response code: 'Forbidden'.
可能存在一些权限问题或IP受限,无法访问应用程序。
确保在部署的
Azure App Service
中没有任何访问限制。启用应用程序服务的预热功能。
如果应用程序没有足够的权限访问这些文件,则会导致此错误。
其他PC较老的分支机构可能已经缓存了它们;包不在源代码管理中。
正如你提到的,缓存NuGet包可能会有问题。检查所有应用程序的
.csproj
是否有NuGet包版本。发布应用程序时选择
Remove additional files at destination
选项。如果仍然遇到问题,请尝试使用不同的方法将代码部署到
App Service
。Overview
页面获取发布配置文件。Publish window
中,选择Import Profile
。Publish profile
,然后继续执行后续步骤。