次の方法で共有


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 フォームを使用していますが、示されている手順は、ASP.NET MVC および Web API にも適用されます。

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

チュートリアルに直接関連しない質問がある場合は、 ASP.NET デプロイ フォーラム または 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 アプリケーション プロジェクトです。 ただし、Visual Studio 用の最新の Web 発行更新プログラムをインストールする場合は、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 配置プロバイダーは、SQL Server Compact から SQL Server への移行などの特定のシナリオを除き、推奨されなくなった従来の方法です。

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

このチュートリアルで示すメソッドでは、Web 配置発行方法を使用する必要があります。 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 でデータベースを削除して再作成します。 テスト データは簡単に再作成されるため、これは開発では問題になりませんが、運用環境では通常、データベースを削除せずにデータベース スキーマを更新する必要があります。 Migrations 機能を使用すると、データベースを削除して再作成することなしに、Code First によりデータベースを更新できます。 Code First で必要なスキーマ変更を行う方法を自動的に決定することも、変更をカスタマイズするコードを記述することもできます。 Code First Migrations の概要については、「 Code First Migrations」を参照してください。

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

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 パッケージの復元] をクリックします。

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

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

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

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

    ホーム ページ開発

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

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

  • 学生の統計情報を表示します (「概要」ページ)。
  • 学生を表示、編集、削除、追加します。
  • コースを表示および編集します。
  • インストラクタを表示および編集します。
  • 部署を表示および編集します。

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

Students Page Dev

学生ページ開発の追加

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

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

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

まとめ

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