Visual Studio から Azure クラウド サービスへの Web アプリケーションの移行および発行を行う

Note

この記事は Azure Cloud Services (クラシック) に適用されます。これは新規のお客様向けには非推奨となっており、2024 年 8 月 31 日に廃止されます。 このテクノロジを使用して構築された既存のサービスは、引き続き Azure Cloud Services (延長サポート) を通じてサポートされます。 新しい開発では、Azure App ServiceAzure FunctionsAzure Container Apps など、特定の目的に合わせて設計された新しいサービスの種類を使用することをお勧めします。 利用可能なサービスの最新の一覧については、「Azure 製品のディレクトリ」を参照してください。

Azure のホスティング サービスとスケーラビリティを利用するには、Web アプリケーションを Azure クラウド サービスに 移行してデプロイします。 変更は最小限ですみます。 この記事ではクラウド サービスへのデプロイのみを説明します。App Service については、Azure App Service での Web アプリのデプロイに関する記事をご覧ください。

重要

この移行は特定の ASP.NET、WCF、および WCF ワークフロー プロジェクトでのみサポートされます。 ASP.NET Core プロジェクトではサポートされません。 「サポートされているプロジェクト テンプレート」のセクションをご覧ください。

前提条件

クラウド サービスにプロジェクトを移行する

  1. ソリューション ノードを右クリックし、[追加] > [新しいプロジェクト] の順に選択して、既存のソリューションに新しい Azure クラウド サービス (クラシック) プロジェクトを追加します。

  2. [新しい Microsoft Azure クラウド サービス (クラシック)] ダイアログで、プロジェクトにロールを追加せずに [OK] をクリックします。

  3. 新しく追加したクラウド サービス プロジェクトの下でロール ノードを右クリックし、[Add Web Role Project in solution...]\(ソリューションに Web ロール プロジェクトを追加する\) を選択します。

  4. [ロール プロジェクトとの関連付け] ダイアログで、Web ロールとして関連付けるプロジェクトを選択します。

    重要

    この Web アプリケーションに必要な他のアセンブリまたはファイルがある場合は、それらのファイルのプロパティを手動で設定する必要があります。 これらのプロパティを設定する方法については、「Include Files in the Service Package (サービス パッケージにファイルを取り込む)」をご覧ください。

エラーと警告

警告またはエラーが発生する場合は、Azure にデプロイする前に解決すべき問題 (アセンブリの不足など) があることを示しています。

アプリケーションをビルドして、計算エミュレーターを使用してローカルで実行したり、Azure に発行したりする場合、次のエラーが表示される場合があります。"指定されたパス、ファイル名、またはその両方が長すぎます"。このエラーは、完全修飾された Azure プロジェクト名の長さが 146 文字を超えていることを示しています。 この問題を修正するには、パスが短くなるように別のフォルダーにソリューションを移動します。

警告をエラーとして処理する方法の詳細については、「 Visual Studio を使用した Azure クラウド サービス プロジェクトの構成」を参照してください。

移行をローカルでテストする

  1. Visual Studio のソリューション エクスプローラーで、追加されたクラウド サービス プロジェクトを右クリックし、[スタートアップ プロジェクトに設定] を選択します。
  2. [デバッグ] > [デバッグの開始] (F5 キー) を選択して Azure デバッグ環境を起動します。 この環境では、特にさまざまな Azure サービスのエミュレーションを利用できます。

アプリケーションでの Azure SQL Database の使用

お使いの Web アプリケーションにオンプレミスの SQL Server データベースを使用する接続文字列がある場合、その代わりとして Azure SQL Database にデータベースを移行し、接続文字列を更新する必要があります。 このプロセスのガイダンスについては、次のトピックをご覧ください。

アプリケーションを Azure クラウド サービスに発行する

  1. Visual Studio からの Azure アプリケーションの発行またはデプロイの準備で説明しているように、必要なクラウド サービスとストレージ アカウントを Azure サブスクリプションで作成します。

  2. Visual Studio でアプリケーション プロジェクトを右クリックし、[Microsoft Azure に公開...] を選択します ([発行...] コマンドではありません)。

  3. 表示される [Azure アプリケーションの発行] で、アカウントを使用して Azure サブスクリプションにサインインし、[次へ]> を選択します。

  4. [設定] > [共通設定] タブで、対象のクラウド サービスおよび環境と構成を [クラウド サービス] ドロップダウン リストから選択します。

  5. [設定] > [詳細設定] の順に移動し、使用するストレージ アカウントを選択してから [次へ]> を選択します。

  6. [診断] で、Application Insights に情報を送信するかどうかを選択します。

  7. [次へ]> を選択して概要を表示し、[発行] を選択してデプロイを開始します。

  8. Visual Studio でアクティビティ ログ ウィンドウが開かれ、進行状況を追跡できます。

    VST_AzureActivityLog

  9. (省略可能) デプロイ プロセスをキャンセルするには、アクティビティ ログの行項目を右クリックし、[取り消して削除] を選択します。 このコマンドによりデプロイ プロセスが停止し、Azure からデプロイ環境が削除されます。 注: このデプロイ環境をデプロイ後に削除するには、Azure Portal を使用する必要があります。

  10. デプロイ後にアプリケーションにアクセスするには、[Azure の活動ログ][完了] の状態と URL が表示されているときに、デプロイの横の矢印を選択します。 Azure から特定の種類の Web アプリケーションを起動する方法の詳細については、次の表をご覧ください。

コンピューティング エミュレーターを使用して Azure でアプリケーションを起動する

[デバッグ] > [デバッグの開始] (F5 キー) を選択すると、Visual Studio デバッガーに接続されているブラウザーでアプリケーションのすべての種類を起動できます。 空の ASP.NET Web アプリケーション プロジェクトでは、まずアプリケーションに .aspx ページを追加し、Web プロジェクトのスタート ページとして設定する必要があります。

次の表に、Azure でアプリケーションを起動する方法の詳細を示します。

Web アプリケーションの種類 Azure での実行
ASP.NET Web アプリケーション
(MVC 2、MVC 3、MVC 4 を含みます)
[デプロイ] タブで [Azure の活動ログ] の URL を選択します。
空の ASP.NET Web アプリケーション アプリケーションの既定の .aspx ページがある場合は、[デプロイ] タブで [Azure の活動ログ] の URL を選択します。 別のページに移動するには、ブラウザーに <deployment_url>/<page_name>.aspx の形式で URL を入力します。
WCF サービス アプリケーション
WCF ワークフロー サービス アプリケーション
.svc ファイルを WCF サービス プロジェクトのスタート ページに設定します。 次に、<deployment_url>/<service_file>.svc に移動します。
ASP.NET 動的エンティティ
ASP.NET 動的データ LINQ to SQL
接続文字列を更新します (次のセクションで説明します)。 次に、<deployment_url>/<page_name>.aspx に移動します。 Linq to SQL については、Azure SQL データベースを使用する必要があります。

ASP.NET 動的エンティティの接続文字列の更新

  1. (#Use-an-azuresql-database-for-your-application) で前述したように、ASP.NET 動的エンティティ Web アプリケーション用の SQL Azure データベースを作成します。

  2. Azure Portal から、このデータベースに必要なテーブルとフィールドを追加します。

  3. web.config ファイルで次の形式の接続文字列を指定し、ファイルを保存します。

    <add name="tempdbEntities"
     connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=<server name>\SQLEXPRESS;initial catalog=<database name>;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;"
     providerName="System.Data.EntityClient"/>
    

    SQL Azure データベースの ADO.NET 接続文字列の connectionString 値を次のように更新します。

    <add name="tempdbEntities"
     connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Server=tcp:<SQL Azure server name>.database.windows.net,1433;Database=<database name>;User ID=<user name>;Password=<password>;Trusted_Connection=False;Encrypt=True;multipleactiveresultsets=True;App=EntityFramework&quot;"
     providerName="System.Data.EntityClient"/>
    

サポートされているプロジェクト テンプレート

クラウド サービスに移行および発行できるアプリケーションは、次の表にあるテンプレートのいずれかを使用している必要があります。 ASP.NET Core はサポートされていません。

テンプレート グループ プロジェクト テンプレート
Web ASP.NET Web アプリケーション (.NET Framework)
Web ASP.NET MVC 2 Web アプリケーション
Web ASP.NET MVC 3 Web アプリケーション
Web ASP.NET MVC 4 Web アプリケーション
Web 空の ASP.NET Web アプリケーション (またはサイト)
Web 空の ASP.NET MVC 2 Web アプリケーション
Web ASP.NET 動的データ エンティティ Web アプリケーション
Web ASP.NET 動的データ LINQ to SQL Web アプリケーション
WCF WCF サービス アプリケーション
WCF WCF ワークフロー サービス アプリケーション
Workflow WCF ワークフロー サービス アプリケーション