設定 Azure App Service 的 ASP.NET 應用程式

注意

如需 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 快速入門搭配 SQL Database 的ASP.NET 教學課程

顯示支援的 .NET Framework 執行階段版本

在 App Service 中,Windows 執行個體已安裝所有支援的 .NET Framework 版本。 若要顯示您可用的 .NET Framework 執行階段和 SDK 版本,請在瀏覽器型主控台中瀏覽至 https://<app-name>.scm.azurewebsites.net/DebugConsole,並執行適當的命令:

針對 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 中,您可以於應用程式的程式碼之外的位置設定應用程式設定。 然後,您可以使用標準 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 值可讓您使用生產設定在產品中執行應用程式。 連接字串的運作方式與其相同。 如此一來,您就可以在程式碼存放庫之外的位置保留應用程式秘密,並存取適當的值,而不需變更您的程式碼。

部署多專案解決方案

當 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 檔案,並在 <system.web> 元素下新增 <customErrors mode="Off"/> 元素。 例如:

<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

--level 的可能值為:ErrorWarningInfoVerbose。 後續的每個層級都包含上一個層級。 例如:Error 只包含錯誤訊息,而 Verbose 包含所有訊息。

開啟診斷記錄後,請執行下列命令來查看記錄資料流:

az webapp log tail --resource-group <resource-group-name> --name <app-name>

如果您沒有立即看到主控台記錄,請在 30 秒後再查看。

注意

您也可以在瀏覽器中的 https://<app-name>.scm.azurewebsites.net/api/logs/docker 檢查記錄檔。

若要隨時停止記錄資料流,請輸入 Ctrl+C

更多資源