附註
如需 ASP.NET Core,請參閱為 Azure App Service 設定 ASP.NET Core 應用程式。 如果 ASP.NET 應用程式在自訂 Windows 或 Linux 容器中執行,請參閱設定 Azure App Service 的自訂容器。
ASP.NET 應用程式必須以編譯的二進位檔部署至 Azure App Service。 Visual Studio 發佈工具會建置方案,然後直接部署已編譯的二進位檔。 App Service 部署引擎會先部署程式代碼存放庫,然後編譯二進位檔。
本指南為 ASP.NET 開發人員提供重要概念和指示。 如果本文是您第一次使用 Azure App Service 的體驗,請遵循 部署 ASP.NET Web 應用程式 ,並使用 Azure SQL 資料庫將 ASP.NET 應用程式部署至 Azure 。
顯示支援的 .NET Framework 執行階段版本
在 App Service 中,Windows 執行個體已安裝所有支援的 .NET Framework 版本。 若要顯示您可用的 .NET Framework 運行時間和 SDK 版本,請在 Azure 入口網站中移至您的應用程式。 選取 [開發工具>]。 選取 [開始]。 在 Kudu 中,選取 CMD 或 PowerShell 的 [偵錯控制台]。 在瀏覽器型控制台中執行適當的命令:
針對 CLR 4 執行階段版本 (.NET Framework 4 和更新版本):
ls "D:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework"
最新的 .NET Framework 版本可能無法立即使用。
針對 CLR 2 執行階段版本 (.NET Framework 3.5 和較舊版本):
ls "D:\Program Files (x86)\Reference Assemblies\Microsoft\Framework"
如果不支援應用程式所需的運行時間,您可以使用自訂容器加以部署。
顯示目前的 .NET Framework 執行階段版本
請在 Cloud Shell 中執行下列命令:
az webapp config show --resource-group <resource-group-name> --name <app-name> --query netFrameworkVersion
值為 v4.0 表示正在使用最新的 CLR 4 版本 (.NET Framework 4.x)。 值為 v2.0 表示正在使用 CLR 2 版本 (.NET Framework 3.5)。
設定 .NET Framework 執行階段版本
根據預設,App Service 會使用最新支援 .NET Framework 版本來執行您的 ASP.NET 應用程式。 若要改用 .NET Framework 3.5 來執行您的應用程式,請在 Cloud Shell (v2.0 表示 CLR 2) 中執行下列命令:
az webapp config set --resource-group <resource-group-name> --name <app-name> --net-framework-version v2.0
App Service 中過期的執行階段發生什麼事?
過時的執行階段已遭維護組織淘汰,或有重大弱點。 因此,它們會從門戶中的建立和設定頁面中移除。 當入口網站隱藏過期的運行時間時,仍在使用該運行時間的任何應用程式會繼續執行。
如果您想要以不再顯示於入口網站上的過時執行階段版本建立應用程式,請使用 Azure CLI、ARM 範本或 Bicep。 這些部署替代項目可讓您建立已從入口網站中移除、但仍受支援的已棄用執行階段。
如果從 App Service 平臺完全移除運行時間,您的 Azure 訂用帳戶擁有者會在移除之前收到電子郵件通知。
存取環境變數
在 App Service 中,您可以於應用程式的程式碼之外的位置設定應用程式設定。 然後,您可以使用標準 ASP.NET 模式在任何類別中對其進行存取:
using System.Configuration;
...
// Get an app setting
ConfigurationManager.AppSettings["MySetting"];
// Get a connection string
ConfigurationManager.ConnectionStrings["MyConnection"];
}
如果您在 App Service 和 web.config 中設定具有相同名稱的應用程式設定,App Service 值會優先於 web.config 值。 本地web.config 值允許您在本地偵錯應用程式。 App Service 值可讓您使用生產設定在產品中執行應用程式。 連接字串的運作方式與其相同。 如此一來,您就可以在程式碼存放庫之外的位置保留應用程式秘密,並存取適當的值,而不需變更您的程式碼。
附註
請考慮完全不需要連線秘密的更安全連線選項。 如需詳細資訊,請參閱從 Azure App Service 安全地連線到 Azure 服務和資料庫。
部署多個專案的解決方案
當 Visual Studio 方案包含多個專案時,Visual Studio 發佈程式會包含選取要部署的專案。 當您部署至 App Service 部署引擎時 (例如 Git,或使用已啟用組建自動化的 ZIP 部署),App Service 部署引擎會挑選其發現的第一個網站或 Web 應用程式當作 App Service應用程式。 您可以藉由指定 PROJECT 應用程式設定來指定 App Service 應該使用的專案。 例如,在 Cloud Shell 中執行下列命令:
az webapp config appsettings set --resource-group <resource-group-name> --name <app-name> --settings PROJECT="<project-name>/<project-name>.csproj"
取得詳細的例外狀況分頁
當您 ASP.NET 應用程式在 Visual Studio 調試程式中產生例外狀況時,瀏覽器會顯示詳細的例外狀況頁面。 一般錯誤訊息會取代 App Service 中的該頁面。 若要在 App Service 中顯示詳細的例外狀況頁面,請開啟 web.config 檔案,並在 <customErrors mode="Off"/> 元素下新增 <system.web> 元素。 例如:
<system.web>
<customErrors mode="Off"/>
</system.web>
使用更新 的web.config重新部署您的應用程式。您現在應該會看到相同的詳細例外狀況頁面。
存取診斷記錄
您可以使用 System.Diagnostics.Trace 在應用程式程式碼中新增診斷訊息。 例如:
Trace.TraceError("Record not found!"); // Error trace
Trace.TraceWarning("Possible data loss"); // Warning trace
Trace.TraceInformation("GET /Home/Index"); // Information trace
若要存取 App Service 中應用程式程式代碼內產生的控制台記錄,請在 Cloud Shell 中執行下列命令來開啟診斷記錄:
az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose
的可能值為 --levelError、 Warning、 Info和 Verbose。 後續的每個層級都包含上一個層級。 例如, Error 只包含錯誤訊息。
Verbose 包含所有訊息。
開啟診斷記錄之後,請執行下列命令來查看記錄資料流:
az webapp log tail --resource-group <resource-group-name> --name <app-name>
如果主控台記錄未立即出現,請在30秒後再次檢查。
若要隨時停止記錄串流,請選取 Ctrl+C。