簡體   English   中英

Visual Studio Web 將 ASP.NET 應用程序發布到 Azure Web 應用程序結果為 Forbidden,除了來自一個分支、一台計算機的代碼

[英]Visual Studio Web Publish ASP.NET app to Azure Web App results in Forbidden except for code from one branch, one computer

我正在使用 ASP.NET MVC (5/.NET Fx 4.8) 應用程序,該應用程序已部署到 Azure Web 應用程序 7 年以上。 昨天,我注意到我只能從單個分支或更早代碼上的單個計算機發布到 Azure Web 應用程序。

Visual Studio 報告部署成功,但是,幾秒鍾后 output window 中出現一條消息: A call to warmup your site failed with response code: 'Forbidden'.

當我從工作計算機和工作分支部署時,一切都很好。

我正在努力了解如何理解這一點。 代碼在兩台計算機上是相同的(根據源代碼管理)。 重申一下,在一台計算機上,我有兩個分支。 一個分支在部署后工作,另一個不工作。

以下是一些額外的觀察結果:

  • 我在工作分支和非工作分支之間運行了一個文件夾差異,唯一的區別是在二進制文件和包含源代碼文件路徑的文件中。
  • 在導致 403 錯誤(“部署失敗”)的部署之后,對 static 文件的請求仍然有效。
  • 部署失敗后,當我通過 FTPS 訪問站點時,一切都正常且就位。

我唯一能想到的是包發生了一些事情(所有新分支和新設備都會從 NuGet 中提取包;其他 PC 較舊的分支應該已經緩存了它們;包不在源代碼控制中)。

我嘗試了 FTP 發布,它在“損壞的”分支上工作。 但是,它要慢得多,所以最好弄清楚 Web Publish 方法的問題是什么。

感謝您的幫助。

編輯

當部署“失敗”時,瀏覽器會顯示此錯誤消息: You do not have permission to view this directory or page. 沒有其他內容,只有那一行文字。

編輯 2

當我查看應用服務中的應用日志stream時,我看到一個更詳細的錯誤頁面顯示具體的HTTP錯誤是403.14。 可能是 web 服務器試圖將該站點視為 static 站點,而不是使用 ASP.NET 路由。

我再次比較了有效分支和無效分支之間的文件內容,web.config、global.asax 等的內容是相同的。

我已將ASP.NET MVC應用程序從 2 台不同的機器部署到 Azure Web,沒有任何問題。

A call to warmup your site failed with response code: 'Forbidden'.

可能存在一些權限問題或限制 IP 無法訪問應用程序。

確保您在部署的Azure App Service中沒有任何訪問限制。

在此處輸入圖像描述

為應用服務啟用預熱功能。

在此處輸入圖像描述

  • 在導致 403 錯誤(“部署失敗”)的部署之后,對 static 文件的請求仍然有效。

如果應用程序沒有足夠的權限來訪問文件,則會導致此錯誤。

其他 PC 較舊的分支機構已經緩存了它們; 包不在源代碼管理中。

正如您所提到的,緩存 NuGet 包可能存在問題。 檢查 NuGet Package 版本的所有應用程序的.csproj

Select 發布應用程序時Remove additional files at destination選項。

在此處輸入圖像描述

如果您仍然遇到問題,請嘗試使用不同的方法將代碼部署到App Service

  • Overview頁面獲取發布配置文件。

在此處輸入圖像描述

  • Publish window Import Profile

在此處輸入圖像描述

  • 瀏覽並撥打 select 下載的Publish profile並繼續執行后續步驟。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM