Azure App Service 向けの ASP.NET アプリを構成する
Note
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 では、サポートされているすべての .NET Framework バージョンが Windows インスタンスに既にインストールされています。 使用可能な .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 の値では実稼働設定の製品内でアプリを実行できます。 接続文字列は同じように機能します。 これにより、コード リポジトリの外部にアプリケーション シークレットを保存し、コードを変更することなく適切な値にアクセスできます。
Note
接続シークレットをまったく必要としない、より安全な接続オプションを検討してください。 詳細については、「Azure App Service から Azure サービスとデータベースへの安全な接続」を参照してください。
マルチ プロジェクト ソリューションをデプロイする
Visual Studio ソリューションに複数のプロジェクトが含まれている場合、Visual Studio の発行プロセスには、デプロイするプロジェクトの選択が既に含まれています。 ビルド自動化を有効にした状態で、Git や ZIP デプロイなどを使用して App Service 展開エンジンにデプロイすると、App Service 展開エンジンは、App Service アプリとして検出された最初の Web サイトまたは Web アプリケーション プロジェクトを選択します。 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"
例外の詳細ページを表示する
Visual Studio デバッガーで ASP.NET アプリの実行中に例外が発生すると、ブラウザーに例外の詳細ページが表示されますが、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
で有効な値は、Error
、Warning
、Info
、および Verbose
です。 後続の各レベルには、前のレベルが含まれます。 たとえば、Error
にはエラー メッセージのみが含まれ、Verbose
にはすべてのメッセージが含まれます。
診断ログがオンになったら、次のコマンドを実行して、ログのストリームを確認します。
az webapp log tail --resource-group <resource-group-name> --name <app-name>
コンソール ログがすぐに表示されない場合は、30 秒以内にもう一度確認します。
Note
https://<app-name>.scm.azurewebsites.net/api/logs/docker
で、ブラウザーからログ ファイルを検査することもできます。
任意のタイミングでログのストリーミングを停止するには、Ctrl
+C
と入力します。