Visual Studio を使用した web 配置の ASP.NET: 概要

作成者: Tom Dykstra

スタート プロジェクトをダウンロードする

このチュートリアル シリーズでは、Visual Studio 2012 と Azure SDK for .NET を使用して、ASP.NET Web アプリケーションをAzure App Service Web Appsまたはサードパーティのホスティング プロバイダーにデプロイ (発行) する方法について説明します。 ほとんどの手順は、Visual Studio 2013に似ています。

Web アプリケーションを開発して、インターネット経由でユーザーが利用できるようにします。 しかし、Web プログラミング チュートリアルは、通常、開発用コンピューターで何かを動作させる方法を示した直後に停止します。 この一連のチュートリアルは、他のチュートリアルが終了する場所から始まります。Web アプリを構築し、テストし、準備が整いました。 次の内容 これらのチュートリアルでは、テストのためにローカル開発コンピューターの IIS に最初にデプロイし、次にステージングと運用のために Azure またはサードパーティのホスティング プロバイダーにデプロイする方法について説明します。 デプロイするサンプル アプリケーションは、Entity Framework、SQL Server、ASP.NET メンバーシップ システムを使用する Web アプリケーション プロジェクトです。 サンプル アプリケーションでは ASP.NET Web Forms を使用しますが、示されている手順は、ASP.NET MVC と Web API にも適用されます。

これらのチュートリアルでは、Visual Studio で ASP.NET を操作する方法を把握していることを前提としています。 そうでない場合は、基本的な ASP.NET Web Formsチュートリアルまたは基本的な ASP.NETMVC チュートリアルを開始することをお勧めします。

チュートリアルに直接関連しない質問がある場合は、 ASP.NET Deployment フォーラム または StackOverflow に投稿できます。

概要

これらのチュートリアルでは、SQL Server データベースを含む ASP.NET Web アプリケーションをデプロイする方法について説明します。 まず、テスト用のローカル開発コンピューターの IIS に展開し、次にステージングと運用のために Azure App Service および Azure SQL Database でWeb Appsします。 Visual Studio のワンクリック発行を使用してデプロイする方法を確認し、コマンド ラインを使用してデプロイする方法を確認します。

チュートリアルの数によって、デプロイ プロセスが困難に見える場合があります。 実際、基本的な手順は簡単です。 ただし、実際の状況では、多くの場合、追加の展開タスク (たとえば、ターゲット サーバーでのフォルダーのアクセス許可の設定) を行う必要があります。 これらの追加タスクの一部を示しました。このチュートリアルでは、実際のアプリケーションを正常にデプロイできない可能性のある情報を残さないようにします。

チュートリアルは順番に実行するように設計されており、各パートは前のパートに基づいて構築されています。 状況に関係のない部分はスキップできますが、後のチュートリアルで手順を調整する必要がある場合があります。

対象ユーザー

このチュートリアルは、次の環境で作業 ASP.NET 開発者を対象としています。

  • 運用環境は、Azure App Service Web Appsまたはサードパーティのホスティング プロバイダーです。
  • デプロイは継続的インテグレーション プロセスに限定されるわけではありませんが、Visual Studio から直接行うことができます。

継続的デリバリー プロセスを使用したソース管理からのデプロイについては、コマンド ラインからデプロイする方法を示す 1 つのチュートリアルを除き、これらのチュートリアルでは説明しません。 継続的デリバリーの詳細については、次のリソースを参照してください。

サード パーティのホスティング プロバイダーの使用

このチュートリアルでは、Azure アカウントを設定し、ステージングと運用のAzure App ServiceでWeb Appsにアプリケーションをデプロイするプロセスについて説明します。 ただし、同じ基本的な手順を使用して、任意のサード パーティのホスティング プロバイダーにデプロイできます。 チュートリアルでは、Azure 固有のプロセスについて説明し、サードパーティのホスティング プロバイダーで期待できる違いについてアドバイスします。

Web アプリ プロジェクトのデプロイ

これらのチュートリアル用にダウンロードしてデプロイするサンプル アプリケーションは、Visual Studio Web アプリケーション プロジェクトです。 ただし、最新の Web Publish Update for Visual Studio をインストールする場合は、Web アプリ プロジェクトに同じ配置方法とツールを使用できます。

ASP.NET MVC プロジェクトの配置

サンプル アプリケーションは ASP.NET Web Forms プロジェクトですが、その方法について学ぶことはすべて、ASP.NET MVC にも適用できます。 Visual Studio MVC プロジェクトは、Web アプリケーション プロジェクトのもう 1 つの形式にすぎません。 唯一の違いは、ASP.NET MVC またはそのターゲット バージョンをサポートしていないホスティング プロバイダーにデプロイする場合は、プロジェクトに適切な (MVC 3MVC 4、または MVC 5) NuGet パッケージがインストールされていることを確認する必要があるということです。

プログラミング言語

サンプル アプリケーションでは C# を使用しますが、チュートリアルでは C# の知識は必要ありません。また、チュートリアルで示されているデプロイ手法は言語固有ではありません。

データベースのデプロイ方法

Visual Studio で web 配置と共にSQL Server データベースをデプロイするには、次の 3 つの方法があります。

  • Entity Framework Code First Migrations
  • dbDacFx Web 配置プロバイダー
  • dbFullSql Web Deploy プロバイダー

このチュートリアルでは、これらの方法の最初の 2 つを使用します。 dbFullSql Web Deploy プロバイダーは、SQL Server CompactからSQL Serverへの移行などの特定のシナリオを除き、推奨されなくなったレガシ メソッドです。

このチュートリアルで示す方法は、SQL Server Compactではなく、SQL Serverデータベース用です。 SQL Server Compact データベースを配置する方法の詳細については、「SQL Server Compactを使用した Visual Studio Web 配置」を参照してください。

このチュートリアルで示すメソッドでは、Web Deploy 発行メソッドを使用する必要があります。 FTP、ファイル システム、FPSE など、別の発行方法を使用する場合は、「Web Deployment Content Map for Visual Studio and ASP.NET での Web アプリケーションの展開とは別にデータベース を配置する」を参照してください。

Entity Framework Code First Migrations

Entity Framework バージョン 4.3 では、Microsoft によって Code First Migrationsが導入されました。 Code First Migrationsは、データ モデルに増分変更を加え、それらの変更をデータベースに反映するプロセスを自動化します。 以前のバージョンの Code First では、通常、データ モデルを変更するたびに Entity Framework でデータベースを削除して再作成します。 テスト データは簡単に再作成されるため、これは開発では問題になりませんが、運用環境では通常、データベースを削除せずにデータベース スキーマを更新する必要があります。 移行機能を使用すると、Code First はデータベースを削除して再作成せずに更新できます。 Code First で必要なスキーマの変更方法を自動的に決定したり、変更をカスタマイズするコードを記述したりできます。 Code First Migrationsの概要については、「Code First Migrations」を参照してください。

Web プロジェクトを配置する場合、Visual Studio では、Code First Migrationsによって管理されるデータベースを配置するプロセスを自動化できます。 発行プロファイルを作成するときに、Code First Migrationsの実行 (アプリケーションの起動時に実行) というラベルの付いたチェック ボックスを選択します。 この設定により、Code First で初期化子クラスが使用されるように、展開プロセスによって、移行先サーバー上のアプリケーション Web.config ファイルが自動的に MigrateDatabaseToLatestVersion 構成されます。

Visual Studio は、配置プロセス中にデータベースに対して何も行いません。 デプロイされたアプリケーションがデプロイ後に初めてデータベースにアクセスすると、Code First によってデータベースが自動的に作成されるか、データベース スキーマが最新バージョンに更新されます。 アプリケーションで Migrations Seed メソッドが実装されている場合、データベースの作成後またはスキーマの更新後に メソッドが実行されます。

このチュートリアルでは、Code First Migrationsを使用してアプリケーション データベースをデプロイします。

dbDacFx Web 配置プロバイダー

Entity Framework Code First で管理されていないSQL Server データベースの場合は、発行プロファイルを構成するときに[データベースの更新] というラベルの付いたチェック ボックスを選択できます。 最初のデプロイ時に、dbDacFx プロバイダーは、ソース データベースと一致するように、変換先データベースにテーブルとその他のデータベース オブジェクトを作成します。 以降のデプロイでは、プロバイダーはソース データベースと移行先データベースの違いを決定し、移行元データベースと一致するように移行先データベースのスキーマを更新します。 既定では、プロバイダーは、テーブルや列が削除された場合など、データ損失の原因となる変更を行いません。

この方法では、データベース テーブル内のデータの配置は自動化されませんが、それを行うスクリプトを作成し、デプロイ中に実行するように Visual Studio を構成できます。 デプロイ中にスクリプトを実行するもう 1 つの理由は、データの損失を引き起こすため、自動的に実行できないスキーマ変更を行うためです。

このチュートリアルでは、dbDacFx プロバイダーを使用して、ASP.NET メンバーシップ データベースをデプロイします。

このチュートリアルのトラブルシューティング

展開中にエラーが発生した場合、または展開されたサイトが正しく実行されない場合、エラー メッセージは必ずしも明らかな解決策を提供するとは限りません。 一般的な問題のシナリオを解決するために、 トラブルシューティングのリファレンス ページ を利用できます。 チュートリアルを実行するときにエラー メッセージが表示されたり、何かが機能しない場合は、トラブルシューティング ページを必ずチェックしてください。

コメントへようこそ

チュートリアルに関するコメントは歓迎され、チュートリアルが更新されると、チュートリアルのコメントで提供される改善のための修正や提案を考慮に入れてすべての努力が行われます。

前提条件

このチュートリアルは、次の製品用に作成されました。

Visual Studio 2010 SP1 またはVisual Studio 2013を使用してチュートリアルに従うことができますが、一部のスクリーン ショットは異なり、一部の機能は異なります。

Visual Studio 2013を使用している場合は、azure SDK for Visual Studio 2013をインストールします。

Visual Studio 2010 SP1 を使用している場合は、次のソフトウェアをインストールします。

マシンに既に存在する SDK の依存関係の数によっては、Azure SDK のインストールに数分から 30 分以上かかる場合があります。 Sdk には Visual Studio Web 発行機能の最新の更新プログラムが含まれているため、Azure ではなくサードパーティのホスティング プロバイダーに発行する予定であっても、Azure SDK が必要です。

注意

このチュートリアルは、Azure SDK のバージョン 1.8.1 で作成されました。 それ以来、追加機能を備えた新しいバージョンがリリースされました。 チュートリアルは、これらの機能をメンションし、それらに関する詳細情報を持つリソースにリンクするように更新されました。

手順とスクリーン ショットはWindows 8に基づいていますが、チュートリアルでは Windows 7 の違いについて説明します。

チュートリアルを完了するには他のソフトウェアが必要ですが、まだインストールする必要はありません。 このチュートリアルでは、必要なときにインストールする手順について説明します。

サンプル アプリケーションのダウンロード

展開するアプリケーションは Contoso University という名前で、既に作成されています。 これは、ASP.NET サイトの Entity Framework チュートリアルで説明されている Contoso University アプリケーションに大まかに基づく、大学の Web サイトの簡略化されたバージョンです。

前提条件がインストールされたら、 Contoso University Web アプリケーションをダウンロードします。 .zip ファイルには、プロジェクトの複数のバージョンが含まれています。 チュートリアルの手順を実行するには、C# フォルダーにあるプロジェクトから始めます。 チュートリアルの最後にあるプロジェクトの外観を確認するには、ContosoUniversity-End フォルダーでプロジェクトを開きます。

チュートリアルの手順を実行するためにプロジェクトを準備するには、次の手順を実行します。

  1. C# フォルダーの ContosoUniversity ソリューション ファイルを、Visual Studio プロジェクトの操作に使用するフォルダー内の ContosoUniversity という名前のフォルダーに保存します。

    既定では、これは Visual Studio 2012 の次のフォルダーです。

    C:\Users\<username>\Documents\Visual Studio 2012\Projects

    (このチュートリアルのスクリーン ショットでは、プロジェクト フォルダーは ドライブのルート ディレクトリにあります C)。

  2. Visual Studio を起動し、プロジェクトを開きます。

  3. ソリューション エクスプローラーで、ソリューションを右クリックし、[EnableNuGet Package Restore]\(NuGet パッケージの復元を有効にする\) をクリックします。

  4. ソリューションをビルドします。

  5. コンパイル エラーが発生した場合は、NuGet パッケージを手動で復元します。

    1. ソリューション エクスプローラーでソリューションを右クリックし、[ソリューションの NuGet パッケージの管理] をクリックします。
    2. [ NuGet パッケージの管理 ] ダイアログ ボックスの上部に、 このソリューションに一部の NuGet パッケージがありません。クリックして復元します。 [ 復元 ] ボタンをクリックします。
    3. ソリューションをリビルドします。
  6. Ctrl キーを押しながら F5 キーを押してアプリケーションを実行します。

    アプリケーションが Contoso University のホーム ページに開きます。

    ホーム ページ開発

    (Visual Studio が SQL Server Express LocalDB インスタンスを起動する間に待機時間が発生する可能性があり、そのプロセスに時間がかかりすぎるとタイムアウト エラーが発生する可能性があります。その場合は、プロジェクトをもう一度開始します。

Web サイト ページにはメニュー バーからアクセスでき、次の機能を実行できます。

  • 学生の統計情報を表示します ([バージョン情報] ページ)。
  • 学生の表示、編集、削除、追加を行います。
  • コースを表示および編集します。
  • 講師を表示および編集します。
  • 部署を表示および編集します。

いくつかの代表的なページのスクリーン ショットを次に示します。

学生ページ開発

学生ページ開発の追加

デプロイに影響するアプリケーション機能を確認する

アプリケーションの次の機能は、アプリケーションのデプロイ方法、またはデプロイに必要な処理に影響します。 これらのそれぞれについて、シリーズの次のチュートリアルで詳しく説明します。

  • Contoso University では、SQL Server データベースを使用して、学生や講師の名前などのアプリケーション データを格納します。 データベースにはテスト データと運用データの組み合わせが含まれており、運用環境にデプロイする場合は、テスト データを除外する必要があります。
  • アプリケーションでは、ユーザー アカウント情報をSQL Server データベースに格納する ASP.NET メンバーシップ システムを使用します。 アプリケーションは、制限された情報にアクセスできる管理者ユーザーを定義します。 テスト アカウントを使用せずに、管理者アカウントを使用してメンバーシップ データベースをデプロイする必要があります。
  • アプリケーションでは、サードパーティのエラー ログとレポート ユーティリティを使用します。 このユーティリティは、アプリケーションと共に配置する必要があるアセンブリで提供されます。
  • エラー ログ ユーティリティは、XML ファイル内のエラー情報をファイル フォルダーに書き込みます。 展開されたサイトで実行 ASP.NET アカウントに、このフォルダーへの書き込みアクセス許可があることを確認する必要があり、このフォルダーを展開から除外する必要があります。 (そうしないと、テスト環境のエラー ログ データが運用環境にデプロイされたり、運用エラー ログ ファイルが削除されたりする可能性があります)。
  • アプリケーションには、展開先の環境 (テスト、ステージング、または運用環境) に応じて、デプロイされた Web.config ファイルで変更する必要がある設定と、ビルド構成 (デバッグまたはリリース) に応じて変更する必要があるその他の設定が含まれています。
  • Visual Studio ソリューションには、クラス ライブラリ プロジェクトが含まれています。 プロジェクト自体ではなく、このプロジェクトによって生成されるアセンブリのみを配置する必要があります。

まとめ

このシリーズの最初のチュートリアルでは、サンプルの Visual Studio プロジェクトをダウンロードし、アプリケーションの展開方法に影響を与えるサイト機能を確認しました。 次のチュートリアルでは、これらの処理の一部を自動的に設定して、デプロイの準備をします。 手動で管理する他のユーザー。