將 ASP.NET Core 應用程式部署至 Azure App Service
Azure App Service 是 Microsoft 雲端運算平台服務,用於裝載 Web 應用程式,包括 ASP.NET Core。
有用的資源
App Service 文件是 Azure 應用程式文件、教學課程、範例、使用說明指南與其他資源的首頁。 關於裝載 ASP.NET Core 應用程式,有兩個值得參考的教學課程:
在 Azure 中建立 ASP.NET Core Web 應用程式
在 Windows 上使用 Visual Studio 建立 ASP.NET Core Web 應用程式並將其部署到 Azure App Service。
在 Linux 上的 App Service 中建立 ASP.NET Core 應用程式
在 Linux 上使用命令列建立 ASP.NET Core Web 應用程式並將其部署到 Azure App Service。
如需Azure App服務上可用的 ASP.NET Core版本,請參閱App Service 儀表板上的ASP.NET Core。
訂閱App Service公告存放庫,並監視問題。 App Service小組會定期張貼公告和抵達App Service案例。
若要閱讀下列文章,請參閱 ASP.NET Core 文件:
使用 Visual Studio 將 ASP.NET Core 應用程式發行到 Azure
了解如何使用 Visual Studio 將 ASP.NET Core 應用程式發行到 Azure App Service。
建立您的第一個管線
設定 ASP.NET Core 應用程式的 CI 組建,然後建立連續部署發行至 Azure App Service。
Azure Web 應用程式沙箱
探索 Azure 應用程式平台強制實施的 Azure App Service 執行階段執行限制。
針對 ASP.NET Core專案進行疑難排解和偵錯
了解 ASP.NET Core 專案的相關警告和錯誤,並為其進行疑難排解。
應用程式設定
平台
App Services 應用程式的平臺架構 (x86/x64) 是在 Azure 入口網站中針對裝載于 A 系列計算 (基本) 或更高裝載層的應用程式,在 Azure 入口網站的設定中設定。 例如,在 Visual Studio 發行設定檔 (.pubxml) 中,確認應用程式的發佈設定 () 符合 Azure 入口網站中應用程式服務組態中的設定。
Azure App Service 具有 64 位元 (x64) 及 32 位元 (x86) 應用程式的執行階段。 App Service 提供的 .NET Core SDK 為 32 位元,但您可以使用 Kudu 主控台或 Visual Studio 中的發佈處理序,部署在本機建置的 64 位元應用程式。 如需詳細資訊,請參閱發佈與部署應用程式一節。
對於具有原生相依性的應用程式而言,Azure App Service 具有 32 位元 (x86) 應用程式的執行階段。 App Service 可使用的 .NET Core SDK 為 32 位元。
如需 .NET Core 架構元件和散發方法的詳細資訊,例如 .NET Core 執行時間和 .NET Core SDK 的相關資訊,請參閱 關於 .NET Core:組合。
套件
包含下列 NuGet 套件,為部署至 Azure App Service 的應用程式提供自動記錄功能:
- Microsoft.AspNetCore.AzureAppServices.HostingStartup會使用IHostingStartup來提供 ASP.NET Core記錄與Azure App 服務的整合。 新增的記錄功能由
Microsoft.AspNetCore.AzureAppServicesIntegration
套件提供。 - Microsoft.AspNetCore.AzureAppServicesIntegration會 AddAzureWebAppDiagnostics 執行 以在套件中
Microsoft.Extensions.Logging.AzureAppServices
新增Azure App 服務診斷記錄提供者。 - Microsoft.Extensions.Logging.AzureAppServices 提供記錄器實作以支援 Azure App Service 診斷記錄和記錄串流功能。
上述套件必須在應用程式的專案檔中明確參考。
使用 Azure 入口網站覆寫應用程式設定
Azure 入口網站中的應用程式設定允許您為應用程式設定環境變數。 環境變數可由環境變數設定提供者取用。
在 Azure 入口網站中建立或修改應用程式設定並選取 [儲存] 按鈕後,即會重新啟動 Azure 應用程式。 當服務重新啟動之後,環境變數便可供應用程式使用。
當應用程式使用 泛型主機時,系統會在呼叫 以建置主機時 CreateDefaultBuilder ,將環境變數載入應用程式的組態中。 如需詳細資訊,請參閱ASP.NET Core 中的 .NET 泛型主機和環境變數組態提供者。
Azure 入口網站中的應用程式設定允許您為應用程式設定環境變數。 環境變數可由環境變數設定提供者取用。
在 Azure 入口網站中建立或修改應用程式設定並選取 [儲存] 按鈕後,即會重新啟動 Azure 應用程式。 當服務重新啟動之後,環境變數便可供應用程式使用。
當應用程式使用 Web 主機時,系統會在呼叫 以建置主機時 CreateDefaultBuilder ,將環境變數載入應用程式的組態中。 如需詳細資訊,請參閱ASP.NET Core Web 主機和環境變數組態提供者。
Proxy 伺服器和負載平衡器案例
IIS 整合中介軟體 (當裝載處理序外時會設定轉送標頭中介軟體) 與 ASP.NET Core 模組會設定為轉送配置 (HTTP/HTTPS) 與發出要求的遠端 IP 位址。 其他 Proxy 伺服器和負載平衡器後方託管的應用程式可能需要其他設定。 如需詳細資訊,請參閱設定 ASP.NET Core 以處理 Proxy 伺服器和負載平衡器。
監視和記錄
部署到 App Service 的 ASP.NET Core 應用程式會自動接收 App Service 延伸模組:ASP.NET Core 記錄整合。 延伸模組讓 Azure App Service 上的 ASP.NET Core 應用程式得以進行記錄整合。
部署到 App Service 的 ASP.NET Core 應用程式會自動接收 App Service 延伸模組 ASP.NET Core 記錄延伸模組。 延伸模組讓 Azure App Service 上的 ASP.NET Core 應用程式得以進行記錄整合。
如需監視、記錄及疑難排解的資訊,請參閱下列文章:
監視 Azure App Service 中的應用程式
了解如何檢閱應用程式和 App Service 方案的配額和計量。
在 Azure App Service 中針對應用程式啟用診斷記錄
探索如何啟用及存取 HTTP 狀態碼、失敗要求和網頁伺服器活動的診斷記錄。
處理 ASP.NET Core 中的錯誤
了解處理 ASP.NET Core 應用程式錯誤的常見方法。
針對 Azure App 服務 和 IIS 上的 ASP.NET Core進行疑難排解
了解如何診斷使用 ASP.NET Core 應用程式部署 Azure App Service 的問題。
使用 ASP.NET Core 進行Azure App 服務和 IIS 的常見錯誤疑難排解
了解託管於 Azure App Service/IIS 之應用程式的常見部署組態錯誤,及疑難排解建議。
資料保護金鑰環及部署位置
資料保護金鑰保存至 %HOME%\ASP.NET\DataProtection-Keys 資料夾。 此資料夾使用網路儲存體進行保存,並會在裝載應用程式的所有電腦上同步。 金鑰待用時不受保護。 此資料夾對單一部署位置中應用程式的所有執行個體皆提供金鑰環。 各部署位置,例如預備和生產位置,不會共用金鑰環。
當在部署位置間交換時,使用資料保護的任何系統都將無法使用前一位置內的金鑰環,來解密儲存的資料。 CookieASP.NET 中介軟體會使用資料保護來保護其 cookie 。 這會導致使用者登出使用標準 ASP.NET Cookie 中介軟體的應用程式。 至於非相依於位置的金鑰環解決方案,請使用外部金鑰環提供者,例如:
- Azure Blob 儲存體
- Azure Key Vault
- SQL 存放區
- Redis 快取
如需詳細資訊,請參閱ASP.NET Core 中的金鑰儲存提供者。
部署使用 .NET Core 預覽的 ASP.NET Core應用程式
若要部署使用 .NET Core 預覽版的應用程式,請參閱下列資源。 當執行時間可用但 SDK 尚未安裝在Azure App 服務時,也會使用這些方法。
如需Azure App服務上可用的 ASP.NET Core版本,請參閱App Service 儀表板上的ASP.NET Core。
如需選取適用于獨立部署的 .NET SDK 版本的相關資訊,請參閱 選取要使用的 .NET Core 版本 。
使用 Azure Pipelines 指定 .NET Core SDK 版本
使用Azure App 服務 CI/CD 案例來設定與 Azure DevOps 的持續整合組建。 建立 Azure DevOps 組建之後,選擇性地將組建設定為使用特定 SDK 版本。
指定 .NET Core SDK 版本
使用App Service部署中心建立 Azure DevOps 組建時,預設建置管線包含 、 Build
Test
和 Publish
的步驟 Restore
。 若要指定 SDK 版本,請選取 [代理程式作業] 清單中的 [ 新增 (+) ] 按鈕,以新增步驟。 在搜尋列中搜尋 .NET Core SDK 。
將步驟移至組建的第一個位置,讓下列步驟使用指定的 .NET Core SDK 版本。 指定 .NET Core SDK 的版本。 在此範例中,SDK 會設定為 3.0.100
。
若要 (SCD) 發佈獨立部署 ,請在 Publish
步驟中設定 SCD,並提供 執行時間識別碼 (RID) 。
部署獨立式預覽應用程式
以預覽執行階段為目標的獨立式部署 (SCD) 會在部署中包含預覽執行階段。
部署獨立式應用程式時:
- Azure App Service 中的網站不需要預覽網站延伸模組。
- 應用程式發佈必須遵循不同於針對 Framework 相依部署 (FDD) 發佈時使用的方法。
請遵循部署獨立式應用程式一節。
將包含 Web 應用程式的 Docker 用於容器
Docker Hub 包含最新的預覽 Docker 映像。 這些映像可用作為基底映像。 請使用映像,並以一般的方式將其部署至容器的 Web 應用程式。
安裝預覽網站延伸模組
如果使用預覽網站延伸模組發生問題,請開啟 dotnet/AspNetCore 問題。
- 從 Azure 入口網站瀏覽至 App Service。
- 選取 Web 應用程式。
- 在搜尋方塊中鍵入 "ex" 來篩選 "Extensions",也可往下捲動管理工具的清單。
- 選取 [延伸模組]。
- 選取 [新增]。
- 從清單選取 [ASP.NET Core {X.Y} ({x64|x86}) 執行階段] 延伸模組,其中
{X.Y}
是 ASP.NET Core 預覽版本,而{x64|x86}
則指定平台。 - 選取 [確定] 以接受法律條款。
- 選取 [確定] 安裝延伸模組。
當作業完成後,會安裝最新的 .NET Core 預覽。 確認安裝:
選取 [進階工具]。
在 [進階工具] 中選取 [移至]。
選取 [偵錯主控台>PowerShell]功能表項目。
在 PowerShell 提示執行下列命令。 在命令中使用 ASP.NET Core 執行階段版本取代
{X.Y}
,並以平台取代{PLATFORM}
:Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.{PLATFORM}\
當已安裝 x64 預覽執行階段時,此命令會傳回
True
。
注意
App Services 應用程式的平臺架構 (x86/x64) 是在 Azure 入口網站中針對裝載于 A 系列計算 (基本) 或更高裝載層的應用程式,在 Azure 入口網站的設定中設定。 例如,確認應用程式的發佈設定 (,例如,在 Visual Studio發行設定檔 (.pubxml) ) 符合Azure 入口網站中應用程式服務組態中的設定。
如果在同處理序模式中執行應用程式,且平台架構設定為適用於 64 位元 (x64),ASP.NET Core 模組會使用 64 位元預覽執行階段 (如果有)。 使用 Azure 入口網站安裝ASP.NET Core {X.Y} (x64) Runtime擴充功能。
安裝 x64 預覽執行時間之後,請在 Azure Kudu PowerShell 命令視窗中執行下列命令以確認安裝。 在下列命令中取代 {X.Y}
ASP.NET Core 執行時間版本:
Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64\
當已安裝 x64 預覽執行階段時,此命令會傳回 True
。
注意
ASP.NET Core 延伸模組可在 Azure 應用程式服務上提供適用於 ASP.NET Core 的其他功能,例如:提供 Azure 記錄。 若從 Visual Studio 部署,會自動安裝延伸模組。 若未安裝延伸模組,請為應用程式安裝。
搭配 ARM 範本使用預覽網站延伸模組
如果您使用 ARM 範本來建立及部署應用程式,可以使用 Microsoft.Web/sites/siteextensions
資源類型將網站延伸模組新增至 Web 應用程式。 在下列範例中,ASP.NET Core 5.0 (x64) Runtime 網站延伸模組 (AspNetCoreRuntime.5.0.x64
) 新增至應用程式:
{
...
"parameters": {
"site_name": {
"defaultValue": "{SITE NAME}",
"type": "String"
},
...
},
...
"resources": [
...
{
"type": "Microsoft.Web/sites/siteextensions",
"apiVersion": "2018-11-01",
"name": "[concat(parameters('site_name'), '/AspNetCoreRuntime.5.0.x64')]",
"location": "[resourceGroup().location]",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('site_name'))]"
]
}
]
}
針對預留位置 {SITE NAME}
,請在 Azure App 服務 (中使用應用程式的名稱, contoso
例如,) 。
發佈及部署應用程式
針對 64 位部署:
- 請使用 64 位元 .NET Core SDK 來建置 64 位元應用程式。
- 在 App Service 的 [組態]>[一般設定] 中,將 [平台] 設為 [64 位元]。 應用程式必須使用基本或更高的服務方案,才能選擇平台位元。
部署依架構不同的應用程式
- 在 [方案總管] 中以滑鼠右鍵按一下專案,再選取 [發佈]。 或者,從 Visual Studio 工具列選取[建>置發行 {應用程式名稱}]。
- 在 [發佈] 對話方塊中,選取[Azure>下一步]。
- 選取 Azure 服務。
- 選取 [進階] 。 [發佈] 對話方塊隨即開啟。
- 選取 [資源群組] 和 [主控方案],或建立新的資源群組。
- 選取 [完成] 。
- 在 [ 發佈 ] 頁面中:
- 針對 [ 設定],選取手寫筆圖示 [編輯組態]:
- 確認已選取 [發行] 設定。
- 在 [ 部署模式 ] 下拉式清單中,選取 [ 架構相依]。
- 在 [ 目標執行時間 ] 下拉式清單中,選取所需的執行時間。 預設值為
win-x86
。
- 若要在部署時移除其他檔案,請開啟 [ 檔案發佈選項 ],然後選取核取方塊以移除目的地的其他檔案。
- 選取 [儲存]。
- 選取 [發佈] 。
- 針對 [ 設定],選取手寫筆圖示 [編輯組態]:
部署獨立式應用程式
使用 Visual Studio 或 .NET Core CLI 進行 自封式部署, (SCD) 。
- 在 [方案總管] 中以滑鼠右鍵按一下專案,再選取 [發佈]。 或者,從 Visual Studio 工具列選取[建>置發行 {應用程式名稱}]。
- 在 [發佈] 對話方塊中,選取[Azure>下一步]。
- 選取 Azure 服務。
- 選取 [進階] 。 [發佈] 對話方塊隨即開啟。
- 選取 [資源群組] 和 [主控方案],或建立新的資源群組。
- 選取 [完成] 。
- 在 [ 發佈 ] 頁面中:
- 針對 [ 設定],選取手寫筆圖示 [編輯組態]:
- 確認已選取 [發行] 設定。
- 在 [ 部署模式 ] 下拉式清單中,選取 [獨立式]。
- 在 [ 目標執行時間 ] 下拉式清單中,選取所需的執行時間。 預設值為
win-x86
。
- 若要在部署時移除其他檔案,請開啟 [ 檔案發佈選項 ],然後選取核取方塊以移除目的地的其他檔案。
- 選取 [儲存]。
- 選取 [發佈] 。
- 針對 [ 設定],選取手寫筆圖示 [編輯組態]:
通訊協定設定 (HTTPS)
安全通訊協定系結允許指定透過 HTTPS 回應要求時要使用的憑證。 繫結需要針對特定主機名稱簽發的有效私密憑證 (.pfx)。 如需詳細資訊,請參閱教學課程:將現有的自訂 SSL 憑證系結至Azure App 服務。
轉換 web.config
例如,如果您需要在發佈 (上轉換 web.config ,請根據組態、設定檔或環境) 設定環境變數,請參閱 轉換web.config。
其他資源
Windows Server 上的 Azure App Service 使用 Internet Information Services (IIS)。 有關基礎 IIS 技術的主題如下: