Visual Studio Web发布ASP.NET应用程序到Azure Web应用程序会导致“禁止”,但来自一个分支、一台计算机的代码除外

oxosxuxt  于 2023-01-21  发布在  .NET
关注(0)|答案(1)|浏览(131)

我正在使用一个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等的内容是相同的。

fnvucqvd

fnvucqvd1#

我已经从2台不同的机器将ASP.NET MVC应用程序部署到Azure Web,没有任何问题。
A call to warmup your site failed with response code: 'Forbidden'.
可能存在一些权限问题或IP受限,无法访问应用程序。
确保在部署的Azure App Service中没有任何访问限制。

启用应用程序服务的预热功能。

  • 在导致403错误("失败的部署")的部署之后,对静态文件的请求仍然有效。

如果应用程序没有足够的权限访问这些文件,则会导致此错误。
其他PC较老的分支机构可能已经缓存了它们;包不在源代码管理中。
正如你提到的,缓存NuGet包可能会有问题。检查所有应用程序的.csproj是否有NuGet包版本。
发布应用程序时选择Remove additional files at destination选项。

如果仍然遇到问题,请尝试使用不同的方法将代码部署到App Service

  • Overview页面获取发布配置文件。

  • Publish window中,选择Import Profile

  • 浏览并选择下载的Publish profile,然后继续执行后续步骤。

相关问题