.NET Web アプリまたはサービスを Azure App Service に移行する

App Service は、スケーラブルな Web サイトと Web アプリケーションをホストするために最適化された、フル マネージドのコンピューティング プラットフォーム サービスです。 この記事では、既存のアプリケーションを Azure App Service にリフトアンドシフトする方法、考慮すべき変更、およびクラウドへの移行に関するその他のリソースについて説明します。 ほとんどの ASP.NET Web サイト (WebForms、MVC) とサービス (Web API、WCF) は、変更なしで Azure App Service に直接移行できます。 若干の変更が必要なものもあれば、リファクタリングが必要なものもあります。

開始するには、 ASP.NET および SQL アプリケーションを Azure App Service に発行します。

注意事項

オンプレミスのリソース (SQL Server を含む)

移行または変更が必要になる可能性のあるオンプレミスのリソースへのアクセスを確認します。 オンプレミスのリソースへのアクセスを軽減するには、次のような方法があります。

  • Azure Virtual Network を使用して、App Service をオンプレミスのリソースに接続する VPN を作成します。
  • Azure Relay を使用して、ファイアウォールを変更せずに、オンプレミス サービスをクラウドに安全に公開します。
  • SQL データベースなどの依存関係を Azure に移行します。
  • クラウドのサービスとしてのプラットフォーム サービスを使用して依存関係を減らします。 たとえば、オンプレミスのメール サーバーに接続するのではなく、SendGrid を使用することを検討します。

ポートのバインド

Azure App Service では、HTTP トラフィック用のポート 80 と、HTTPS トラフィック用のポート 443 がサポートされています。

WCF では、次のバインドがサポートされています。

バインド メモ
BasicHttp
WSHttp
WSDualHttpBinding Web ソケットのサポートを有効にする必要があります。
NetHttpBinding 双方向コントラクトに対して、Web ソケットのサポートを有効にする必要があります。
NetHttpsBinding 双方向コントラクトに対して、Web ソケットのサポートを有効にする必要があります。
BasicHttpContextBinding
WebHttpBinding
WSHttpContextBinding

認証

Azure App Service では既定で匿名認証がサポートされており、意図した場合はフォーム認証がサポートされます。 Windows 認証は、Azure Active Directory および ADFS と統合する場合にのみ使用できます。 オンプレミスのディレクトリを Azure Active Directory と統合する方法の詳細については、こちらをご覧ください。

GAC (グローバル アセンブリ キャッシュ) 内のアセンブリ

これはサポートされていません。 アプリの \bin フォルダーに必要なアセンブリをコピーすることを検討してください。 サーバーにインストールされているカスタム .msi ファイル (PDF ジェネレーターなど) は使用できません。

IIS 設定

従来、アプリケーションの applicationHost.config で構成していたあらゆるものを、Azure Portal で構成できるようになりました。 AppPool のビット、WebSocket の有効化/無効化、マネージド パイプライン バージョン、.NET Framework バージョン (2.0/4.0) などがこれに該当します。 アプリケーション設定を変更するには、Azure Portal に移動し、Web アプリのブレードを開いて、 [アプリケーションの設定] タブを選択します。

IIS5 互換モード

IIS5 互換モードはサポートされていません。 Azure App Service では、各 Web App とその下のすべてのアプリケーションが、アプリケーション プールの特定のセットを使用して同じワーカー プロセスで実行されます。

IIS7+ スキーマ準拠

Azure App Service IIS スキーマで定義されていない要素と属性があります。 問題が発生した場合は、XDT 変換を使用することを検討してください。

サイトごとに 1 つのアプリケーション プール

Azure App Service では、各 Web アプリとその下のすべてのアプリケーションが、同じアプリケーション プールで実行されます。 一般的な設定で単一のアプリケーション プールを確立するか、アプリケーションごとに個別の Web アプリを作成することを検討してください。

COM および COM+ コンポーネント

Azure App Service では、プラットフォーム上で COM コンポーネントを登録することはできません。 アプリで COM コンポーネントを使用する場合は、それらのコンポーネントをマネージド コードで書き換えて、サイトまたはアプリケーショントと共にデプロイする必要があります。

物理ディレクトリ

Azure App Service では、物理ドライブへのアクセスは許可されていません。 Azure Files を使用して、SMB 経由でファイルにアクセスすることが必要な場合があります。 HTTPS 経由でアクセスする場合は、Azure Blob Storage にファイルを格納できます。

ISAPI フィルター

Azure App Service では、ISAPI フィルターの使用をサポートできます。ただし、ISAPI DLL をサイトと共に配置し、web.config を使用して登録する必要があります。

HTTPS バインドと SSL

HTTPS バインドは移行されず、SSL 証明書も Web サイトに関連付けられません。 ただし、サイトの移行が完了したら、SSL 証明書を手動でアップロードできます。

SharePoint と FrontPage

SharePoint と FrontPage Server Extensions (FPSE) はサポートされていません。

Web サイトのサイズ

無料サイトのコンテンツのサイズは 1 GB に制限されています。 サイトが 1 GB を超える場合は、有料の SKU にアップグレードする必要があります。 「App Service の価格」をご覧ください。

データベース サイズ

SQL Server データベースについては、現在の SQL Database の価格を確認してください。

Azure Active Directory (AAD) の統合

AAD は無料のアプリでは機能しません。 AAD を使用するには、アプリの SKU をアップグレードする必要があります。 「App Service の価格」をご覧ください。

監視と診断

監視と診断に現在使用しているオンプレミスのソリューションは、クラウドでは機能しない可能性があります。 ただし、Web アプリでの問題を特定し、デバッグできるように、Azure には、ログ記録、監視、診断用のツールが用意されています。 Web アプリの診断は、アプリの構成で簡単に有効にすることができます。また、記録されたログは、Azure Application Insights で表示できます。 Web アプリの診断ログの有効化の詳細については、こちらをご覧ください。

接続文字列とアプリケーション設定

Azure KeyVault を使用することを検討してください。これは、アプリケーションで使用される機密情報を安全に格納するサービスです。 また、このデータを App Service 設定として保存することもできます。

DNS

アプリケーションの要件に基づいて、DNS 構成を更新することが必要な場合があります。 これらの DNS 設定は、App Service のカスタム ドメイン設定で構成できます。

Windows コンテナーを使用した Azure App Service

アプリを App Service に直接移行できない場合は、Windows コンテナーを使用した App Service を検討します。これにより、GAC、COM コンポーネント、MSI、.NET FX API へのフル アクセス、DirectX などを使用できるようになります。

関連項目