Azure App Service に ASP.NET Core アプリを展開するDeploy ASP.NET Core apps to Azure App Service

Azure App Service は ASP.NET Core を含む Web アプリをホストするための Microsoft クラウド コンピューティング プラットフォーム サービスです。Azure App Service is a Microsoft cloud computing platform service for hosting web apps, including ASP.NET Core.

役に立つリソースUseful resources

App Service のドキュメント」は、Azure アプリのドキュメント、チュートリアル、サンプル、ハウツー ガイド、その他のリソースのホームです。App Service Documentation is the home for Azure Apps documentation, tutorials, samples, how-to guides, and other resources. ASP.NET Core アプリのホスティングに関連する次の 2 つのチュートリアルは特に重要です。Two notable tutorials that pertain to hosting ASP.NET Core apps are:

Azure に ASP.NET Core Web アプリを作成するCreate an ASP.NET Core web app in Azure
Visual Studio を使用して ASP.NET Core Web アプリを作成し、Windows の Azure App Service に配置します。Use Visual Studio to create and deploy an ASP.NET Core web app to Azure App Service on Windows.

App Service on Linux で ASP.NET Core アプリを作成するCreate an ASP.NET Core app in App Service on Linux
コマンド ラインを使用して ASP.NET Core Web アプリを作成し、Linux の Azure App Service に配置します。Use the command line to create and deploy an ASP.NET Core web app to Azure App Service on Linux.

ASP.NET Core のドキュメントでは、次の記事を参照できます。The following articles are available in ASP.NET Core documentation:

Visual Studio を使用して Azure に ASP.NET Core アプリを発行する
Visual Studio を使用して Azure App Service に ASP.NET Core アプリを発行する方法を説明します。Learn how to publish an ASP.NET Core app to Azure App Service using Visual Studio.

Visual Studio および Git と ASP.NET Core を組み合わせた Azure への継続的配置
Visual Studio で ASP.NET Core Web アプリを作成し、それを Azure App Service に配置する方法について説明します。Git を利用し、継続的に配置します。Learn how to create an ASP.NET Core web app using Visual Studio and deploy it to Azure App Service using Git for continuous deployment.

最初のパイプラインを作成するCreate your first pipeline
ASP.NET Core アプリ用に CI ビルドを設定し、Azure App Service に継続的配置リリースを作成します。Set up a CI build for an ASP.NET Core app, then create a continuous deployment release to Azure App Service.

Azure Web アプリのサンドボックスAzure Web App sandbox
Azure アプリのプラットフォームで適用される Azure App Service ランタイム実行の制限事項について説明します。Discover Azure App Service runtime execution limitations enforced by the Azure Apps platform.

ASP.NET Core プロジェクトのトラブルシューティング
ASP.NET Core プロジェクトでの警告とエラーについて説明し、トラブルシューティングを行います。Understand and troubleshoot warnings and errors with ASP.NET Core projects.

アプリケーション構成Application configuration

プラットフォームPlatform

64 ビット (x64) と 32 ビット (x86) アプリ用のランタイムは、Azure App Service 上に存在します。Runtimes for 64-bit (x64) and 32-bit (x86) apps are present on Azure App Service. App Service で使用できる .NET Core SDK は 32 ビットですが、Kudu コンソールまたは Visual Studio の発行プロセスを使用すれば、ローカルでビルドされた 64 ビット アプリを展開できます。The .NET Core SDK available on App Service is 32-bit, but you can deploy 64-bit apps built locally using the Kudu console or the publish process in Visual Studio. 詳細については、「アプリを発行および配置する」セクションを参照してください。For more information, see the Publish and deploy the app section.

ネイティブの依存関係を含むアプリのため、32 ビット (x86) アプリ用のランタイムが Azure App Service 上に存在します。For apps with native dependencies, runtimes for 32-bit (x86) apps are present on Azure App Service. App Service で使用できる .NET Core SDK は 32 ビットです。The .NET Core SDK available on App Service is 32-bit.

.Net Core ランタイムおよび .NET Core SDK に関する情報など、.NET Core フレームワーク コンポーネントおよび配布メソッドの詳細については、.NET Core: コンポジションに関するページを参照してください。For more information on .NET Core framework components and distribution methods, such as information on the .NET Core runtime and the .NET Core SDK, see About .NET Core: Composition.

パッケージPackages

次の NuGet パッケージを、Azure App Service にデプロイされたアプリ用の自動ログ記録機能を提供するために含めます。Include the following NuGet packages to provide automatic logging features for apps deployed to Azure App Service:

上記のパッケージは、Microsoft.AspNetCore.App メタパッケージからは使用できません。The preceding packages aren't available from the Microsoft.AspNetCore.App metapackage. .NET Framework を対象とする、または Microsoft.AspNetCore.App メタパッケージを参照するアプリは、アプリのプロジェクト ファイル内の個々 のパッケージを明示的に参照する必要があります。Apps that target .NET Framework or reference the Microsoft.AspNetCore.App metapackage must explicitly reference the individual packages in the app's project file.

Azure Portal を使用してアプリの構成をオーバーライドするOverride app configuration using the Azure Portal

Azure Portal のアプリの設定により、アプリの環境変数の設定が許可されます。App settings in the Azure Portal permit you to set environment variables for the app. 環境変数は、環境変数構成プロバイダーで使用できます。Environment variables can be consumed by the Environment Variables Configuration Provider.

Azure Portal でアプリの設定が作成または変更され、 [保存] ボタンが選択された場合、Azure アプリは再起動されます。When an app setting is created or modified in the Azure Portal and the Save button is selected, the Azure App is restarted. 環境変数は、サービスが再起動された後にアプリに適用されます。The environment variable is available to the app after the service restarts.

アプリが汎用ホストを使用する場合、環境変数は既定ではアプリの構成に読み込まれません。開発者が構成プロバイダーを追加する必要があります。When an app uses the Generic Host, environment variables aren't loaded into an app's configuration by default and the configuration provider must be added by the developer. 開発者は、構成プロバーダーを追加する際に環境変数のプレフィックスを決定します。The developer determines the environment variable prefix when the configuration provider is added. 詳細については、.NET での汎用ホスト および「Environment Variables Configuration Provider」(環境変数構成プロバイダー) をご覧ください。For more information, see .NET での汎用ホスト and the Environment Variables Configuration Provider.

アプリが WebHost.CreateDefaultBuilder を使用してホストをビルドする場合、ホストを構成する環境変数では ASPNETCORE_ プレフィックスが使用されます。When an app builds the host using WebHost.CreateDefaultBuilder, environment variables that configure the host use the ASPNETCORE_ prefix. 詳細については、ASP.NET Core の Web ホスト および「Environment Variables Configuration Provider」(環境変数構成プロバイダー) をご覧ください。For more information, see ASP.NET Core の Web ホスト and the Environment Variables Configuration Provider.

プロキシ サーバーとロード バランサーのシナリオProxy server and load balancer scenarios

要求が発生したスキーム (HTTP/HTTPS) とリモート IP アドレスを転送するために、アウトプロセスをホストするときに Forwarded Headers Middleware を構成する IIS 統合ミドルウェアと、ASP.NET Core モジュールが構成されます。The IIS Integration Middleware, which configures Forwarded Headers Middleware when hosting out-of-process, and the ASP.NET Core Module are configured to forward the scheme (HTTP/HTTPS) and the remote IP address where the request originated. 追加のプロキシ サーバーとロード バランサーの背後でホストされているアプリでは、追加の構成が必要になる場合があります。Additional configuration might be required for apps hosted behind additional proxy servers and load balancers. 詳細については、「プロキシ サーバーとロード バランサーを使用するために ASP.NET Core を構成する」を参照してください。For more information, see Configure ASP.NET Core to work with proxy servers and load balancers.

監視およびログ記録Monitoring and logging

Azure App Service には、ASP.NET Core アプリのログ統合を有効にする ASP.NET Core のログ記録拡張機能が用意されています。Azure App Service offers the ASP.NET Core Logging Extensions, which enable logging integration for ASP.NET Core apps. この拡張機能を App Service に自動的に追加するには、App Service 発行プロファイルで Visual Studio の発行プロセスを使用します。To automatically add the extension to an App Service, use Visual Studio's Publish process with an App Service publish profile. Visual Studio を使用してアプリをデプロイしていない場合は、App Service の [開発ツール] > [拡張機能] ダイアログを使用して、Azure portal に拡張機能を手動でインストールします。When not using Visual Studio to deploy an app, manually install the extension in the Azure Portal via the App Service's Development Tools > Extensions dialog.

監視、ログ記録、トラブルシューティングに関する情報は、次の記事を参照してください。For monitoring, logging, and troubleshooting information, see the following articles:

Azure App Service でアプリを監視するMonitor apps in Azure App Service
アプリと App Service プランに関するクォータとメトリックを確認する方法を説明します。Learn how to review quotas and metrics for apps and App Service plans.

Azure App Service のアプリの診断ログの有効化Enable diagnostics logging for apps in Azure App Service
HTTP 状態コード、失敗した要求、Web サーバー アクティビティの診断ログを有効にしてアクセスする方法を説明します。Discover how to enable and access diagnostic logging for HTTP status codes, failed requests, and web server activity.

ASP.NET Core のエラーを処理する
ASP.NET Core アプリでエラーを処理するための一般的な手法について理解します。Understand common approaches to handling errors in ASP.NET Core apps.

Azure App Service および IIS での ASP.NET Core のトラブルシューティング
ASP.NET Core アプリを使用した Azure App Service の配置に関する問題を診断する方法を説明します。Learn how to diagnose issues with Azure App Service deployments with ASP.NET Core apps.

ASP.NET Core を使用した Azure App Service および IIS の一般的なエラーのリファレンス
Azure App Service/IIS によってホストされるアプリの一般的な配置の構成エラーのトラブルシューティングに関するアドバイスを参照してください。See the common deployment configuration errors for apps hosted by Azure App Service/IIS with troubleshooting advice.

データ保護キー リングとデプロイ スロットData Protection key ring and deployment slots

データ保護キー%HOME%\ASP.NET\DataProtection-Keys フォルダーに保存されます。Data Protection keys are persisted to the %HOME%\ASP.NET\DataProtection-Keys folder. このフォルダーはネットワーク ストレージにバックアップされ、アプリをホストしているすべてのマシンで同期されています。This folder is backed by network storage and is synchronized across all machines hosting the app. 保存中のキーは保護されていません。Keys aren't protected at rest. このフォルダーから、単一のデプロイ スロットのアプリのすべてのインスタンスにキー リングが提供されます。This folder supplies the key ring to all instances of an app in a single deployment slot. ステージングや運用などの別のデプロイ スロットでは、キー リングが共有されません。Separate deployment slots, such as Staging and Production, don't share a key ring.

デプロイ スロットを切り替えると、データ保護を使用しているすべてのシステムが前のスロット内のキー リングを使用して格納されたデータを復号化できなくなります。When swapping between deployment slots, any system using data protection won't be able to decrypt stored data using the key ring inside the previous slot. ASP.NET Cookie ミドルウェアは、その Cookie の保護にデータ保護を使用します。ASP.NET Cookie Middleware uses data protection to protect its cookies. これにより、ユーザーが標準の ASP.NET Cookie ミドルウェアを使用するアプリからサインアウトします。This leads to users being signed out of an app that uses the standard ASP.NET Cookie Middleware. スロットに依存しないキー リング ソリューションの場合、次のような外部キー リング プロバイダーを使用します。For a slot-independent key ring solution, use an external key ring provider, such as:

  • Azure Blob StorageAzure Blob Storage
  • Azure Key VaultAzure Key Vault
  • SQL ストアSQL store
  • Redis CacheRedis cache

詳細については、ASP.NET Core でのキー記憶域プロバイダー を参照してください。For more information, see ASP.NET Core でのキー記憶域プロバイダー.

Azure App Service に ASP.NET Core プレビュー リリースを展開するDeploy ASP.NET Core preview release to Azure App Service

アプリが .NET Core のプレビュー リリースに依存している場合は、次のいずれかの方法を使用します。Use one of the following approaches if the app relies on a preview release of .NET Core:

プレビュー サイト拡張機能をインストールするInstall the preview site extension

プレビュー サイト拡張機能の使用に関する問題が発生した場合は、aspnet/AspNetCore issue を作成してください。If a problem occurs using the preview site extension, open an aspnet/AspNetCore issue.

  1. Azure Portal から App Service に移動します。From the Azure Portal, navigate to the App Service.
  2. Web アプリを選択します。Select the web app.
  3. 検索ボックスに「拡張」と入力して "拡張機能" にフィルターするか、管理ツールの一覧をスクロール ダウンします。Type "ex" in the search box to filter for "Extensions" or scroll down the list of management tools.
  4. [拡張機能] を選びます。Select Extensions.
  5. [追加] を選びます。Select Add.
  6. [ASP.NET Core {X.Y} ({x64|x86}) ランタイム] の拡張機能を一覧から選択します。{X.Y} は ASP.NET Core のプレビュー バージョンで、{x64|x86} はプラットフォームを指定します。Select the ASP.NET Core {X.Y} ({x64|x86}) Runtime extension from the list, where {X.Y} is the ASP.NET Core preview version and {x64|x86} specifies the platform.
  7. [OK] を選んで法的条項に同意します。Select OK to accept the legal terms.
  8. [OK] を選択し、拡張機能をインストールします。Select OK to install the extension.

操作が完了すると、最新の .NET Core プレビューがインストールされます。When the operation completes, the latest .NET Core preview is installed. 次のようにしてインストールを検証します。Verify the installation:

  1. [高度なツール] を選択します。Select Advanced Tools.

  2. [高度なツール][移動] を選択します。Select Go in Advanced Tools.

  3. [デバッグ コンソール] > [PowerShell] のメニュー項目を選択します。Select the Debug console > PowerShell menu item.

  4. PowerShell のプロンプトで次のコマンドを実行します。At the PowerShell prompt, execute the following command. コマンドの {X.Y} を ASP.NET Core ランタイム バージョンに、{PLATFORM} をプラットフォームに置き換えます。Substitute the ASP.NET Core runtime version for {X.Y} and the platform for {PLATFORM} in the command:

    Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.{PLATFORM}\
    

    x64 プレビューのランタイムがインストールされていると、コマンドで True が返されます。The command returns True when the x64 preview runtime is installed.

注意

App Services アプリのプラットフォーム アーキテクチャ (x86/x64) が、Azure Portal で A シリーズ計算、またはより優れたホスティング階層でホストされているアプリの設定に設定されます。The platform architecture (x86/x64) of an App Services app is set in the app's settings in the Azure Portal for apps that are hosted on an A-series compute or better hosting tier. アプリがインプロセス モードで実行されていて、プラットフォーム アーキテクチャが 64 ビット (x64) 向けに構成されている場合は、ASP.NET Core モジュールで 64 ビット プレビュー ランタイム (ある場合) が使用されます。If the app is run in in-process mode and the platform architecture is configured for 64-bit (x64), the ASP.NET Core Module uses the 64-bit preview runtime, if present. ASP.NET Core {X.Y} (x64) ランタイムの拡張機能をインストールします。Install the ASP.NET Core {X.Y} (x64) Runtime extension.

x64 プレビュー ランタイムがインストールされたら、Kudu PowerShell コマンド ウィンドウで次のコマンドを実行して、インストールを確認します。After installing the x64 preview runtime, run the following command in the Kudu PowerShell command window to verify the installation. コマンドの {X.Y} を ASP.NET Core ランタイム バージョンに置き換えます。Substitute the ASP.NET Core runtime version for {X.Y} in the command:

Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64\

x64 プレビューのランタイムがインストールされていると、コマンドで True が返されます。The command returns True when the x64 preview runtime is installed.

注意

ASP.NET Core 拡張機能によって、たとえば Azure のログ記録など、Azure App Services での ASP.NET Core の追加機能が有効になります。ASP.NET Core Extensions enables additional functionality for ASP.NET Core on Azure App Services, such as enabling Azure logging. この拡張機能は、Visual Studio からデプロイするときに自動的にインストールされます。The extension is installed automatically when deploying from Visual Studio. 拡張機能がインストールされていない場合は、アプリにインストールします。If the extension isn't installed, install it for the app.

ARM テンプレートでプレビュー サイト拡張機能を使用するUse the preview site extension with an ARM template

ARM テンプレートを使用してアプリを作成し、展開する場合は、リソースの種類として siteextensions を使用してサイト拡張機能を Web アプリに追加することができます。If an ARM template is used to create and deploy apps, the siteextensions resource type can be used to add the site extension to a web app. 次に例を示します。For example:

{
    "type": "siteextensions",
    "name": "AspNetCoreRuntime",
    "apiVersion": "2015-04-01",
    "location": "[resourceGroup().location]",
    "properties": {
        "version": "[parameters('aspnetcoreVersion')]"
    },
    "dependsOn": [
        "[resourceId('Microsoft.Web/Sites', parameters('siteName'))]"
    ]
}

自己完結型のプレビュー アプリを展開するDeploy a self-contained preview app

プレビュー ランタイムを対象とする自己完結型の展開 (SCD) では、展開でプレビュー ランタイムを保持します。A self-contained deployment (SCD) that targets a preview runtime carries the preview runtime in the deployment.

自己完結型アプリを展開する場合:When deploying a self-contained app:

自己完結型アプリを展開する」セクションのガイダンスに従ってください。Follow the guidance in the Deploy the app self-contained section.

コンテナー用の Web アプリで Docker を使用するUse Docker with Web Apps for containers

Docker Hub には最新のプレビュー Docker イメージが含まれています。The Docker Hub contains the latest preview Docker images. イメージを基本イメージとして使用できます。The images can be used as a base image. 通常は、イメージを使用して、Web App for Containers に展開します。Use the image and deploy to Web Apps for Containers normally.

アプリを発行および配置するPublish and deploy the app

フレームワークに依存するアプリを展開するDeploy the app framework-dependent

64 ビットのフレームワークに依存する展開の場合:For a 64-bit framework-dependent deployment:

  • 64 ビットのアプリをビルドするには、64 ビットの .NET Core SDK を使用します。Use a 64-bit .NET Core SDK to build a 64-bit app.
  • App Service の [構成] > [全般設定] で、 [プラットフォーム][64 ビット] に設定します。Set the Platform to 64 Bit in the App Service's Configuration > General settings. アプリでは、プラットフォームのビット数の選択を有効にするために、Basic 以上のサービス プランを使用する必要があります。The app must use a Basic or higher service plan to enable the choice of platform bitness.
  1. Visual Studio ツールバーから [ビルド] > [発行 {アプリケーション名}] を選択するか、ソリューション エクスプローラーでプロジェクトを右クリックして、 [発行] を選択します。Select Build > Publish {Application Name} from the Visual Studio toolbar or right-click the project in Solution Explorer and select Publish.
  2. [発行先を選択] ダイアログで、 [App Service] が選択されていることを確認します。In the Pick a publish target dialog, confirm that App Service is selected.
  3. [詳細] を選択します。Select Advanced. [発行] ダイアログが開きます。The Publish dialog opens.
  4. [発行] ダイアログで、次の操作を行います。In the Publish dialog:
    • [リリース] の構成が選択されていることを確認します。Confirm that the Release configuration is selected.
    • [展開モード] ドロップダウン リストを開き、 [フレームワーク依存] を選択します。Open the Deployment Mode drop-down list and select Framework-Dependent.
    • [ターゲット ランタイム] として [ポータブル] を選択します。Select Portable as the Target Runtime.
    • 展開時に追加のファイルを削除する場合、 [ファイル発行オプション] を開いて、転送先で追加のファイルを削除するチェック ボックスを選択します。If you need to remove additional files upon deployment, open File Publish Options and select the check box to remove additional files at the destination.
    • [保存] を選択します。Select Save.
  5. 発行ウィザードの残りのメッセージに従って、新しいサイトを作成するか、既存のサイトを更新します。Create a new site or update an existing site by following the remaining prompts of the publish wizard.

自己完結型アプリを展開するDeploy the app self-contained

自己完結型の展開 (SCD) には、Visual Studio またはコマンドライン インターフェイス (CLI) ツールを使用します。Use Visual Studio or the command-line interface (CLI) tools for a self-contained deployment (SCD).

  1. Visual Studio ツールバーから [ビルド] > [発行 {アプリケーション名}] を選択するか、ソリューション エクスプローラーでプロジェクトを右クリックして、 [発行] を選択します。Select Build > Publish {Application Name} from the Visual Studio toolbar or right-click the project in Solution Explorer and select Publish.
  2. [発行先を選択] ダイアログで、 [App Service] が選択されていることを確認します。In the Pick a publish target dialog, confirm that App Service is selected.
  3. [詳細] を選択します。Select Advanced. [発行] ダイアログが開きます。The Publish dialog opens.
  4. [発行] ダイアログで、次の操作を行います。In the Publish dialog:
    • [リリース] の構成が選択されていることを確認します。Confirm that the Release configuration is selected.
    • [展開モード] ドロップダウン リストを開いて、 [自己完結] を選択します。Open the Deployment Mode drop-down list and select Self-Contained.
    • [ターゲット ランタイム] ドロップダウン リストからターゲット ランタイムを選択します。Select the target runtime from the Target Runtime drop-down list. 既定値は、win-x86 です。The default is win-x86.
    • 展開時に追加のファイルを削除する場合、 [ファイル発行オプション] を開いて、転送先で追加のファイルを削除するチェック ボックスを選択します。If you need to remove additional files upon deployment, open File Publish Options and select the check box to remove additional files at the destination.
    • [保存] を選択します。Select Save.
  5. 発行ウィザードの残りのメッセージに従って、新しいサイトを作成するか、既存のサイトを更新します。Create a new site or update an existing site by following the remaining prompts of the publish wizard.

プロトコル設定 (HTTPS)Protocol settings (HTTPS)

セキュリティで保護されたプロトコル バインディングを使うと、HTTPS 経由で要求に応答するときに使用する証明書を指定できます。Secure protocol bindings allow you specify a certificate to use when responding to requests over HTTPS. バインディングには、特定のホスト名に向けて発行された有効なプライベート証明書 ( .pfx) が必要です。Binding requires a valid private certificate (.pfx) issued for the specific hostname. 詳しくは、「チュートリアル: 既存のカスタム SSL 証明書を Azure App Service にバインドする」をご覧ください。For more information, see Tutorial: Bind an existing custom SSL certificate to Azure App Service.

web.config を変換するTransform web.config

発行時に web.config を変換する必要がある場合 (たとえば、構成、プロファイル、環境に基づいて環境変数を設定する場合) は、web.config を変換する を参照してください。If you need to transform web.config on publish (for example, set environment variables based on the configuration, profile, or environment), see web.config を変換する.

その他の技術情報Additional resources

Windows Server の Azure App Service ではインターネット インフォメーション サービス (IIS) が使用されます。Azure App Service on Windows Server uses Internet Information Services (IIS). 次のトピックは、基になる IIS テクノロジと関連しています。The following topics pertain to the underlying IIS technology: