Visual Studio を使用した ASP.NET Web 配置: テストへの配置ASP.NET Web Deployment using Visual Studio: Deploying to Test

Tom Dykstraby Tom Dykstra

このチュートリアルシリーズでは、Visual Studio 2017 を使用して Web Apps またはサードパーティのホスティングプロバイダーに Azure App Service するために、ASP.NET web アプリケーションをデプロイ (発行) する方法について説明します。This tutorial series shows how to deploy (publish) an ASP.NET web application to Azure App Service Web Apps or to a third-party hosting provider using Visual Studio 2017. シリーズの詳細については、シリーズの最初のチュートリアルを参照してください。For information about the series, see the first tutorial in the series.

現在のバージョンの Azure へのデプロイについては、「 azure で ASP.NET Core web アプリを作成する」を参照してください。For a current version of deploying to Azure, see Create an ASP.NET Core web app in Azure.

概要Overview

このチュートリアルでは、ローカルコンピューター上のインターネットインフォメーションサーバー (IIS) に ASP.NET web アプリケーションを展開します。In this tutorial, you'll deploy an ASP.NET web application to Internet Information Server (IIS) on your local computer.

一般に、アプリケーションを開発する場合は、Visual Studio で実行してテストします。Generally when you develop an application, you run it and test it in Visual Studio. 既定では、Visual Studio 2017 の web アプリケーションプロジェクトでは、開発用 web サーバーとして IIS Express が使用されます。By default, web application projects in Visual Studio 2017 use IIS Express as the development web server. IIS Express は、Visual Studio 2017 が既定で使用する Visual Studio 開発サーバー (Cassini とも呼ばれます) よりも完全な IIS と同様に動作します。IIS Express behaves more like full IIS than the Visual Studio Development Server (also known as Cassini), which Visual Studio 2017 uses by default. ただし、開発 web サーバーは IIS とまったく同じように動作しません。But neither development web server works exactly like IIS. その結果、Visual Studio でアプリを正常に実行してテストすることはできますが、IIS に配置すると失敗します。Consequently, an app could run and test correctly in Visual Studio but fail when it's deployed to IIS.

アプリケーションを確実にテストするには、次の2つの方法があります。You can reliably test your application in two ways:

  1. 後で運用環境に配置する場合と同じプロセスを使用して、開発用コンピューター上の IIS にアプリケーションを配置します。Deploy your application to IIS on your development computer using the same process that you'll use later to deploy it to your production environment.

    Web プロジェクトを実行するときに IIS を使用するように Visual Studio を構成できますが、それでも配置プロセスはテストされません。You can configure Visual Studio to use IIS when you run a web project, but that wouldn't test your deployment process. このメソッドは、デプロイプロセスを検証し、IIS でアプリケーションが正しく実行されることを確認します。This method validates your deployment process and that your application runs correctly under IIS.

  2. 実稼働環境と同様に、アプリケーションをテスト環境にデプロイします。Deploy your application to a test environment similar to your production environment.

    これらのチュートリアルの運用環境は、Azure App Service で Web Apps ます。The production environment for these tutorials is Web Apps in Azure App Service. 理想的なテスト環境は、Azure サービスで作成された追加の web アプリです。The ideal test environment is an additional web app created in the Azure Service. 運用 web アプリと同じように設定されますが、テストにのみ使用します。Though it would be set up the same way as a production web app, you would only use it for testing.

オプション2は、テスト方法として最も信頼性の高い方法です。Option 2 is the most reliable way to test. オプション2を使用する場合、必ずしもオプション1を使用する必要はありません。If you use option 2, you don't necessarily need to use option 1. ただし、サードパーティのホスティングプロバイダーにデプロイする場合は、オプション2が実現できないか、コストがかかる可能性があります。そのため、このチュートリアルシリーズでは両方の方法を紹介します。However if you're deploying to a third-party hosting provider, option 2 might not be feasible or might be expensive, so this tutorial series shows both methods. オプション2のガイダンスについては、「運用環境へのデプロイ」チュートリアルをご覧ください。Guidance for option 2 is provided in the Deploying to the Production Environment tutorial.

Visual Studio で web サーバーを使用する方法の詳細については、「 Visual studio の Web サーバー」を参照してください。 ASP.NET web プロジェクトを参照してください。For more information about using web servers in Visual Studio, see Web Servers in Visual Studio for ASP.NET Web Projects.

リマインダー: チュートリアルを実行するときにエラーメッセージが表示されたり、機能しない場合は、必ずトラブルシューティングのページを確認してください。Reminder: If you receive an error message or something doesn't work as you go through the tutorial, be sure to check the troubleshooting page.

Contoso 大学 starter プロジェクトをダウンロードするDownload the Contoso University starter project

Contoso 大学の Visual Studio starter ソリューションとプロジェクトをダウンロードしてインストールします。Download and install the Contoso University Visual Studio starter solution and project. このソリューションには、完成したチュートリアルが含まれています。This solution contains the completed tutorial.

スタートプロジェクトのダウンロードDownload Starter Project

IIS のインストールInstall IIS

開発用コンピューター上の IIS に配置するには、IIS と Web 配置がインストールされていることを確認します。To deploy to IIS on your development computer, confirm that IIS and Web Deploy are installed. 既定では、Visual Studio は Web 配置をインストールしますが、IIS は既定の Windows 10、Windows 8、または Windows 7 の構成には含まれていません。By default, Visual Studio installs Web Deploy, but IIS isn't included in the default Windows 10, Windows 8, or Windows 7 configuration. 既に IIS をインストールしており、既定のアプリケーションプールが既に .NET 4 に設定されている場合は、次のセクションに進みます。If you've already installed IIS and the default application pool is already set to .NET 4, skip to the next section.

  1. IIS と Web 配置をインストールするには、 Web Platform Installer (WPI)を使用することをお勧めします。It's recommended you use the Web Platform Installer (WPI) to install IIS and Web Deploy. WPI は、IIS を含む推奨される IIS 構成をインストールし、必要に応じて前提条件を Web 配置します。WPI installs a recommended IIS configuration that includes IIS and Web Deploy prerequisites if necessary.

    IIS、Web 配置、または必要なコンポーネントのいずれかが既にインストールされている場合は、不足しているものだけが WPI によってインストールされます。If you've already installed IIS, Web Deploy, or any of their required components, the WPI installs only what is missing.

    • Web Platform Installer を使用して、IIS と Web 配置をインストールします。Use the Web Platform Installer to install IIS and Web Deploy:

      WPI を使用して IIS をインストールする

      WPI を使用して Web 配置をインストールする

      IIS 7 がインストールされることを示すメッセージが表示されます。You'll see messages indicating that IIS 7 will be installed. このリンクは、Windows 8 の IIS 8 で機能します。ただし、Windows 8 以降では、次の手順を実行して、ASP.NET 4.7 がインストールされていることを確認してください。The link works for IIS 8 in Windows 8; but for Windows 8 and later, go through the following steps to make sure that ASP.NET 4.7 is installed:

    • [コントロールパネル] を開き、[プログラムと機能]の [Windows の機能の有効化または無効化] ** > > ** の [プログラムと機能 > ] を開きます。Open Control Panel > Programs > Programs and Features > Turn Windows features on or off.

    • インターネットインフォメーションサービスWorld Wide Web Servicesアプリケーション開発機能を展開します。Expand Internet Information Services, World Wide Web Services, and Application Development Features.

    • ASP.NET 4.7が選択されていることを確認します。Confirm that ASP.NET 4.7 is selected.

      ASP.NET 4.7 を選択します

    • World Wide Web サービスIIS 管理コンソールが選択されていることを確認します。Confirm that World Wide Web Services and IIS Management Console is selected. IIS と IIS マネージャーがインストールされます。This installs IIS and IIS Manager.

      World Wide Web サービスの選択

    • [OK] を選択します。Select OK. インストールが行われていることを示すダイアログボックスメッセージが表示されます。Dialog box messages indicating installation is taking place appear.

IIS をインストールした後、 Iis マネージャーを実行して、.NET Framework バージョン4が既定のアプリケーションプールに割り当てられていることを確認します。After installing IIS, run IIS Manager to make sure that the .NET Framework version 4 is assigned to the default application pool.

  1. WINDOWS + R キーを押して、[ファイルの実行] ダイアログボックスを開きます。Press WINDOWS+R to open the Run dialog box.

    (Windows 8 以降では、スタートページで「run」と入力します。(On Windows 8 or later, enter "run" on the Start page. Windows 7 では、 [スタート] メニューから [実行] を選択します。In Windows 7, select Run from the Start menu. [実行][スタート] メニューにない場合は、タスクバーを右クリックし、 [プロパティ] を選択します。 [スタート] メニューを選択し、 [カスタマイズ] をクリックして、 [コマンドの実行] を選択します。If Run isn't in the Start menu, right-click the taskbar, select Properties, select the Start Menu tab, select Customize, and select Run command.)

  2. 「Inetmgr.exe」と入力し、[ OK] を選択します。Enter "inetmgr" and select OK.

  3. [接続] ウィンドウで、サーバーノードを展開し、 [アプリケーションプール] を選択します。In the Connections pane, expand the server node and select Application Pools. 次の図に示すように、 [アプリケーションプール] ウィンドウで、 DefaultAppPoolが .net framework version 4 に割り当てられている場合は、次のセクションに進みます。In the Application Pools pane if DefaultAppPool is assigned to the .NET framework version 4 as in the following illustration, skip to the next section.

    Inetmgr_showing_4。0_app_pools

  4. 2つのアプリケーションプールのみが表示され、両方が .NET Framework 2.0 に設定されている場合は、IIS に ASP.NET 4 をインストールします。If you see only two application pools and both are set to .NET Framework 2.0, install ASP.NET 4 in IIS.

    Windows 8 以降の場合は、前のセクションの手順「ASP.NET 4.7 がインストールされていることを確認するには」を参照してください。または、「 windows 8 および Windows Server 2012 に ASP.NET 4.5 をインストールする方法」を参照してください。For Windows 8 or later, see the previous section's instructions for making sure that ASP.NET 4.7 is installed or see How to install ASP.NET 4.5 on Windows 8 and Windows Server 2012. Windows 7 の場合は、Windows の [スタート] メニューの [コマンドプロンプト] を右クリックし、 [管理者として実行] をクリックして、コマンドプロンプトウィンドウを開きます。For Windows 7, open a command prompt window by right-clicking Command Prompt in the Windows Start menu and selecting Run as Administrator. 次のコマンドを使用して、 aspnet_iis 登録ツールを実行し、IIS に ASP.NET 4 をインストールします。Run aspnet_regiis.exe to install ASP.NET 4 in IIS using the following commands. (32 ビットシステムでは、"Framework64" を "Framework" に置き換えます)。(In 32-bit systems, replace "Framework64" with "Framework".)

    cd %windir%\Microsoft.NET\Framework64\v4.0.30319
    aspnet_regiis.exe –i
    

    このコマンドは .NET Framework 4 の新しいアプリケーションプールを作成しますが、既定のアプリケーションプールは2.0 に設定されたままになります。This command creates new application pools for the .NET Framework 4, but the default application pool will remain set to 2.0. .NET 4 を対象とするアプリケーションをそのアプリケーションプールに配置しているため、アプリケーションプールを .NET 4 に変更します。You're deploying an application that targets .NET 4 to that application pool, so change the application pool to .NET 4.

  5. IIS マネージャーを閉じた場合は、もう一度実行し、サーバーノードを展開して、 [アプリケーションプール] を選択します。If you closed IIS Manager, run it again, expand the server node, and select Application Pools.

  6. [アプリケーションプール] ウィンドウで、 [DefaultAppPool] を選択します。In the Application Pools pane, select DefaultAppPool. [操作] ウィンドウで、 [基本設定] を選択します。In the Actions pane, select Basic Settings.

    Inetmgr_selecting_Basic_Settings_for_app_pool

  7. [アプリケーションプールの編集] ダイアログボックスで、 .net clr バージョン.net clr v v4.0.30319に変更します。In the Edit Application Pool dialog box, change the .NET CLR version to .NET CLR v4.0.30319. [OK] を選択します。Select OK.

    Selecting_。 NET_4_for_DefaultAppPool

これで、IIS に web アプリケーションを発行する準備ができました。You're now ready to publish a web application to IIS. ただし、まず、テスト用のデータベースを作成します。First, however, create databases for testing.

SQL Server Express をインストールするInstall SQL Server Express

LocalDB は IIS で動作するように設計されていないため、テスト環境には SQL Server Express がインストールされている必要があります。LocalDB isn't designed to work in IIS, so your test environment has to have SQL Server Express installed. SQL Server Express Visual Studio 2010 を使用している場合は、既定でインストールされています。If you're using Visual Studio 2010 SQL Server Express, it's already installed by default. Visual Studio 2012 以降を使用している場合は、SQL Server Express をインストールします。If you're using Visual Studio 2012 or later, install SQL Server Express.

SQL Server Express をインストールするには、ダウンロードセンター (Microsoft SQL Server 2017 Express edition) からダウンロードしてインストールします。To install SQL Server Express, download and install it from Download Center: Microsoft SQL Server 2017 Express edition.

SQL Server インストールセンターの最初のページで、新規 SQL Server スタンドアロンインストールを実行するか、既存のインストールに機能を追加して、既定の選択肢を受け入れる指示に従います。On the first page of the SQL Server Installation Center, select New SQL Server stand-alone installation or add features to an existing installation and follow the instructions accepting the default choices. インストールウィザードで、既定の設定をそのまま使用します。In the installation wizard, accept the default settings. インストールオプションの詳細については、「インストールウィザードからの SQL Server のインストール (セットアップ)」を参照してください。For more information about installation options, see Install SQL Server from the Installation Wizard (Setup).

テスト環境用の SQL Server Express データベースを作成するCreate SQL Server Express databases for the test environment

Contoso 大学のアプリケーションには、次の2つのデータベースがあります。The Contoso University application has two databases:

  1. メンバーシップデータベースMembership database
  2. アプリケーションデータベースApplication database

これらのデータベースは、2つの異なるデータベースまたは1つのデータベースに配置できます。You can deploy these databases to two separate databases or to a single database. これらを組み合わせると、データベースの結合が簡単になります。Combining them makes database joins between them easier.

サードパーティのホスティングプロバイダーにデプロイする場合は、ホスティングプランによって、それらを結合する理由が提供されることもあります。If you're deploying to a third-party hosting provider, your hosting plan might also give you a reason to combine them. たとえば、プロバイダーは複数のデータベースに対してより多くの料金を請求する場合や、複数のデータベースを許可しない場合があります。For example, the provider might charge more for multiple databases or might not even allow more than one database.

このチュートリアルでは、テスト環境の2つのデータベースと、ステージング環境と運用環境の1つのデータベースに配置します。In this tutorial, you'll deploy to two databases in the test environment and to one database in the staging and production environments.

Visual Studio の 表示 メニューで、サーバーエクスプローラー (visual Web Developer ではデータベースエクスプローラー ) を選択します。From the View menu in Visual Studio, select Server Explorer (Database Explorer in Visual Web Developer). [データ接続] を右クリックし、 [新しい SQL Server データベースの作成] を選択します。Right-click Data Connections and select Create New SQL Server Database.

Selecting_Create_New_SQL_Server_Database

[新しい SQL Server データベースの作成] ダイアログボックスで、 [サーバー名] ボックスに「.\SQLExpress」と入力し、 [新しいデータベース名] ボックスに「ContosoUniversity」と入力します。In the Create New SQL Server Database dialog box, enter ".\SQLExpress" in the Server name box and "aspnet-ContosoUniversity" in the New database name box. [OK] を選択します。Select OK.

Aspnet の作成-ContosoUniversity

同じ手順に従って、ContosoUniversityという名前の新しい SQL Server Express School データベースを作成します。Follow the same procedure to create a new SQL Server Express School database named ContosoUniversity.

サーバーエクスプローラーには、2つの新しいデータベースが表示されます。Server Explorer shows the two new databases.

サーバーエクスプローラーの新しいデータベース

新しいデータベースの grant スクリプトを作成するCreate a grant script for the new databases

開発用コンピューターの IIS でアプリケーションを実行すると、アプリケーションは既定のアプリケーションプールの資格情報を使用してデータベースにアクセスします。When the application runs in IIS on your development computer, the application uses the default application pool's credentials to access the database. ただし、既定では、アプリケーションプールには、データベースを開くためのアクセス許可がありません。However, by default, the application pool doesn't have permission to open the databases. これは、そのアクセス許可を付与するスクリプトを実行する必要があることを意味します。This means you need to run a script to grant that permission. このセクションでは、そのスクリプトを作成し、後で実行して、アプリケーションが IIS で実行されているときにデータベースを開けるようにします。In this section, you'll create that script and run it later to make sure that the application can open the databases when it runs in IIS.

テキストエディターで、次の SQL コマンドを新しいファイルにコピーし、 Grant .sqlとして保存します。In a text editor, copy the following SQL commands into a new file and save it as Grant.sql.

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [ContosoUniversityUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'ContosoUniversityUser'
GO

Visual Studio で、Contoso 大学ソリューションを開きます。In Visual Studio, open the Contoso University solution. (プロジェクトのいずれかではなく) ソリューションを右クリックし、 [追加] を選択します。Right-click the solution (not one of the projects), and select Add. [既存の項目] を選択し、を参照して .sqlを指定し、それを開きます。Select Existing Item, browse to Grant.sql, and open it.

Note

このスクリプトは、このチュートリアルで指定されているように、Windows 10、Windows 8、または Windows 7 の IIS 設定を使用して、SQL Server Express 2012 以降とで動作するように設計されています。This script is designed to work with SQL Server Express 2012 or later and with the IIS settings in Windows 10, Windows 8, or Windows 7 as they are specified in this tutorial. 異なるバージョンの SQL Server または Windows を使用している場合、またはコンピューターに IIS を別の方法でセットアップする場合は、このスクリプトの変更が必要になることがあります。If you're using a different version of SQL Server or Windows, or if you set up IIS on your computer differently, changes to this script might be required. SQL Server スクリプトの詳細については、「 SQL Server オンラインブック」を参照してください。For more information about SQL Server scripts, see SQL Server Books Online.

Note

セキュリティに関する注意このスクリプトは、実行時にデータベースにアクセスするユーザーに db_owner アクセス許可を付与します。これは、運用環境で使用するものです。Security Note This script gives db_owner permissions to the user that accesses the database at run time, which is what you'll have in the production environment. 場合によっては、完全なデータベーススキーマ更新権限を持つユーザーを配置に対してのみ指定し、データの読み取りと書き込みのみを行う権限を持つ別のユーザーを実行時に指定することができます。In some scenarios, you might want to specify a user that has full database schema update permissions only for deployment and specify for run time a different user that has permissions only to read and write data. 詳細については、このチュートリアルで後述する「 Code First Migrations に対する web.config の自動変更のレビュー 」を参照してください。For more information, see Reviewing the Automatic Web.config Changes for Code First Migrations later in this tutorial.

アプリケーションデータベースで grant スクリプトを実行するRun the grant script in the application database

データベースの配置でDbdacfxプロバイダーが使用されるため、配置時にメンバーシップデータベースで許可スクリプトを実行するように発行プロファイルを構成することができます。You can configure the publish profile to run the grant script in the membership database during deployment because that database deployment uses the dbDacFx provider. Code First Migrations の配置中にスクリプトを実行することはできません。これは、アプリケーションデータベースを配置する方法です。You can't run scripts during Code First Migrations deployment, which is how you're deploying the application database. これは、アプリケーションデータベースに配置する前に、スクリプトを手動で実行する必要があることを意味します。This means you have to manually run the script before deployment in the application database.

  1. Visual Studio で、前の手順で作成したGrant .sqlファイルを開きます。In Visual Studio, open the Grant.sql file that you created earlier.

  2. [接続] を選択します。Select Connect.

    [接続] ボタン

  3. [サーバーへの接続] ダイアログボックスで、サーバー名として「 .\SQLExpress 」と入力します。In the Connect to Server dialog box, enter .\SQLExpress as the Server Name. [接続] を選択します。Select Connect.

  4. データベース ボックスの一覧で ContosoUniversity を選択します。In the database drop-down list select ContosoUniversity. [実行] を選択します。Select Execute.

アプリケーションの実行時にデータベーステーブルを作成するための Code First Migrations のために、既定のアプリケーションプール id には、アプリケーションデータベースに対する十分なアクセス許可が与えられます。The default application pool identity now has sufficient permissions in the application database for Code First Migrations to create the database tables when the application runs.

IIS に公開するPublish to IIS

Visual Studio と Web 配置を使用して IIS に配置できる方法はいくつかあります。There are several ways you can deploy to IIS using Visual Studio and Web Deploy:

  • Visual Studio のワンクリック発行を使用します。Use Visual Studio one-click publish.
  • コマンドラインから発行します。Publish from the command line.
  • 展開パッケージを作成し、IIS マネージャーを使用してインストールします。Create a deployment package and install it using IIS Manager. パッケージには、IIS にサイトをインストールするために必要なすべてのファイルとメタデータを含む .zip ファイルがあります。The package has a .zip file with all the files and metadata required to install a site in IIS.
  • 展開パッケージを作成し、コマンドラインを使用してインストールします。Create a deployment package and install it using the command line.

デプロイタスクを自動化するように Visual Studio を設定する前のチュートリアルで実行したプロセスは、これらのすべての方法に適用されます。The process you went through in the previous tutorials to set up Visual Studio to automate deployment tasks applies to all of these methods. これらのチュートリアルでは、最初の2つの方法を使用します。In these tutorials, you'll use the first two methods. 配置パッケージの使用方法の詳細については、「web配置パッケージを作成およびインストールする」を参照してください。For information about using deployment packages, see Deploying a web application by creating and installing a web deployment package in the Web Deployment Content Map for Visual Studio and ASP.NET.

発行する前に、管理者モードで Visual Studio を実行していることを確認してください。Before publishing, make sure that you're running Visual Studio in administrator mode. タイトルバーに (管理者) が表示されない場合は、Visual Studio を閉じます。If you don't see (Administrator) in the title bar, close Visual Studio. Windows 8 (またはそれ以降) のスタートページまたは windows 7 の [スタート] メニューで、Visual Studio アイコンを右クリックし、 [管理者として実行] を選択します。In the Windows 8 (or later) Start page or the Windows 7 Start menu, right-click the Visual Studio icon and select Run as Administrator. ローカルコンピューター上の IIS に発行する場合、管理者モードは発行にのみ必要です。Administrator mode is only required for publishing when you're publishing to IIS on the local computer.

発行プロファイルを作成するCreate the publish profile

  1. ソリューションエクスプローラーで、 ContosoUniversityプロジェクト ( ContosoUniversityプロジェクトではありません) を右クリックします。In Solution Explorer, right-click the ContosoUniversity project (not the ContosoUniversity.DAL project). [発行] を選択します。Select Publish. [発行] ページが表示されます。The Publish page appears.

  2. [新しいプロファイル] を選択します。Select New Profile. [発行先の選択] ダイアログボックスが表示されます。The Pick a publish target dialog box appears.

  3. [IIS、FTP など] を選択します。 [プロファイルの作成] を選択します。Select IIS, FTP, etc. Select Create Profile. 発行ウィザードが表示されます。The Publish wizard appears.

    Web の発行ウィザードの [プロファイル] タブ

  4. [発行方法] ドロップダウンメニューから、 [Web 配置] を選択します。From the Publish method drop-down menu, select Web Deploy.

  5. [サーバー] に「 localhost」と入力します。For Server, enter localhost.

  6. [サイト名] に「 Default Web Site/ContosoUniversity」と入力します。For Site name, enter Default Web Site/ContosoUniversity.

  7. [宛先 URL] に「 http://localhost/ContosoUniversity 」と入力します。For Destination URL, enter http://localhost/ContosoUniversity.

    送信先 URLの設定は必須ではありません。The Destination URL setting isn't required. Visual Studio がアプリケーションの配置を完了すると、既定のブラウザーが自動的にこの URL に表示されます。When Visual Studio finishes deploying the application, it automatically opens your default browser to this URL. 配置後にブラウザーが自動的に開かないようにする場合は、このボックスを空白のままにします。If you don't want the browser to open automatically after deployment, leave this box blank.

  8. [接続の検証] を選択して、設定が正しいことを確認し、ローカルコンピューターの IIS に接続できることを確認します。Select Validate Connection to verify that the settings are correct and you can connect to IIS on the local computer.

    緑色のチェックマークは、接続が成功したことを確認します。A green check mark verifies that the connection is successful.

    Web の発行ウィザードの [接続] タブ

  9. [次] へ を選択して、 [設定] タブに進みます。Select Next to advance to the Settings tab.

  10. [構成] ボックスの一覧で、配置するビルド構成を指定します。The Configuration drop-down box specifies the build configuration to deploy. リリースの既定値に設定したままにします。Leave it set to the default value of Release. このチュートリアルでは、デバッグビルドを配置しません。You won't be deploying Debug builds in this tutorial.

  11. [ファイルの発行オプション] を展開します。Expand File Publish Options. アプリ_データフォルダーから ファイルを除外する を選択します。Select Exclude files from the App_Data folder.

    テスト環境では、アプリケーションは、 App_Dataフォルダー内の .mdf ファイルではなく、ローカル SQL Server Express インスタンスで作成したデータベースにアクセスします。In the test environment, the application accesses the databases that you created in the local SQL Server Express instance, not the .mdf files in the App_Data folder.

  12. [発行時にプリコンパイルを解除し、ターゲットで追加ファイルを削除する] チェックボックスをオフにします。Leave the Precompile during publishing and Remove additional files at destination check boxes cleared.

    [設定] タブのファイル発行オプション

    プリコンパイルは、主に大規模なサイトに便利なオプションです。Precompiling is an option that is useful mainly for large sites. サイトが発行された後にページが初めて要求されたときに、起動時間を短縮することができます。It can reduce startup time the first time a page is requested after the site is published.

    追加のファイルを削除する必要はありません。これは最初の展開なので、コピー先のフォルダーにファイルがまだ存在しないためです。You don't need to remove additional files since this is your first deployment and there won't be any files in the destination folder yet.

    Note

    同じサイトへの後続の配置のために [転送先で追加のファイルを削除する] を選択した場合は、展開する前にどのファイルが削除されるかを事前に確認できるように、プレビュー機能を使用してください。If you select Remove additional files at destination for a subsequent deployment to the same site, make sure that you use the preview feature so that you see in advance which files will be deleted before you deploy. 期待される動作は、Web 配置が、プロジェクトで削除された移行先サーバー上のファイルを削除することです。The expected behavior is that Web Deploy will delete files on the destination server that you have deleted in your project. ただし、コピー元とコピー先のフォルダーの下のフォルダー構造全体が比較されます。また、場合によっては、削除したくないファイルが削除される Web 配置があります。However, the entire folder structure under the source and destination folders is compared; and in some scenarios, Web Deploy might delete files you don't want to delete.

    たとえば、ルートフォルダーにプロジェクトを配置するときに、サーバーのサブフォルダーに web アプリケーションがある場合、サブフォルダーは削除されます。For example if you have a web application in a subfolder on the server when you deploy a project to the root folder, the subfolder will be deleted. Contoso.com のメインサイト用に1つのプロジェクトがあり、contoso.com/blog にブログ用の別のプロジェクトがあるとします。You might have one project for the main site at contoso.com and another project for a blog at contoso.com/blog. ブログアプリケーションはサブフォルダーにあります。The blog application is in a subfolder. メインサイトの展開時に [ターゲットで追加ファイルを削除する] を選択すると、ブログアプリケーションが削除されます。If you select Remove additional files at destination when you deploy the main site, the blog application will be deleted.

    別の例では、アプリ_データフォルダーが予期せず削除される可能性があります。For another example, your App_Data folder might get deleted unexpectedly. SQL Server Compact などの一部のデータベースでは、アプリケーション_データフォルダーにデータベースファイルが格納されます。Certain databases such as SQL Server Compact store database files in the App_Data folder. 最初の配置の後、以降の配置ではデータベースファイルをコピーしないようにするため、[パッケージ/発行 Web] タブの [アプリ_データを除外する] を選択します。その後、[ターゲットで追加ファイルを削除する] を選択した場合、データベースファイルとアプリ_データフォルダー自体は、次回の発行時に削除されます。After the initial deployment, you don't want to keep copying the database files in subsequent deployments, so you select Exclude App_Data on the Package/Publish Web tab. After you do that if you have Remove additional files at destination selected, your database files and the App_Data folder itself will be deleted the next time you publish.

メンバーシップデータベースの配置を構成するConfigure deployment for the membership database

次の手順は、ダイアログボックスの [データベース] セクションのdefaultconnectionデータベースに適用されます。The following steps apply to the DefaultConnection database in the dialog box's Databases section.

  1. [リモート接続文字列] ボックスに、新しい SQL Server Express メンバーシップデータベースを指す次の接続文字列を入力します。In the Remote connection string box, enter the following connection string that points to the new SQL Server Express membership database.

    Data Source=.\SQLExpress;Initial Catalog=aspnet-ContosoUniversity;Integrated Security=True
    

    配置プロセスでは、配置された Web.config ファイルにこの接続文字列を格納します。これは、この接続文字列を実行時に使用するためです。The deployment process puts this connection string in the deployed Web.config file because Use this connection string at runtime is selected.

    サーバーエクスプローラーから接続文字列を取得することもできます。You can also get the connection string from Server Explorer. サーバーエクスプローラーで、 [データ接続] を展開し、 <machinename>\sqlexpress.aspnet-ContosoUniversityデータベースを選択します。次に、 [プロパティ] ウィンドウで、接続文字列の値をコピーします。In Server Explorer, expand Data Connections and select the <machinename>\sqlexpress.aspnet-ContosoUniversity database, then from the Properties window copy the Connection String value. この接続文字列には、Pooling=False削除できる追加の設定が1つあります。That connection string will have one additional setting that you can delete: Pooling=False.

  2. [データベースの更新] を選択します。Select Update database.

    これにより、配置中にデータベーススキーマが転送先データベースに作成されます。This causes the database schema to be created in the destination database during deployment. 次のステップでは、実行する必要がある追加のスクリプトを指定します。1つは、既定のアプリケーションプールへのデータベースアクセスを許可するスクリプト、もう1つはデータを配置するスクリプトです。In next steps, you specify the additional scripts that you need to run: one to grant database access to the default application pool and one to deploy data.

  3. [データベースの更新の構成] を選択します。Select Configure database updates.

  4. [データベースの更新の構成] ダイアログボックスで、 [SQL スクリプトの追加] を選択します。In the Configure Database Updates dialog box, select Add SQL Script. 先ほどソリューションフォルダーに保存したGrant .sqlスクリプトに移動します。Navigate to the Grant.sql script that you saved earlier in the solution folder.

  5. Aspnet-data-devスクリプトを追加するには、この手順を繰り返します。Repeat the process to add the aspnet-data-dev.sql script.

    メンバーシップデータベースのデータベースの更新の構成

  6. [閉じる] を選択します。Select Close.

アプリケーションデータベースの展開の構成Configure deployment for the application database

Visual Studio によって Entity Framework DbContext クラスが検出されると、[データベース ] セクションにエントリが作成されます。このエントリには、 [データベースの更新] チェックボックスではなく [Code First Migrations の実行] チェックボックスがあります。When Visual Studio detects an Entity Framework DbContext class, it creates an entry in the Databases section that has an Execute Code First Migrations check box instead of an Update Database check box. このチュートリアルでは、このチェックボックスを使用して Code First Migrations 展開を指定します。For this tutorial, you'll use that check box to specify Code First Migrations deployment.

場合によっては、DbContext データベースを使用していても、データベースを配置するために移行ではなく dbDacFx プロバイダーを使用したい場合があります。In some scenarios, you might be using a DbContext database but you want to use the dbDacFx provider instead of Migrations to deploy the database. そのような場合は、MSDN の ASP.NET Web デプロイに関する FAQ で、「移行せずに Code First データベースをデプロイする操作方法」を参照してください。In that case, see How do I deploy a Code First database without Migrations? in the ASP.NET Web Deployment FAQ on MSDN.

次の手順は、ダイアログボックスの [データベース] セクションのschoolcontext.csデータベースに適用されます。The following steps apply to the SchoolContext database in the dialog box's Databases section.

  1. [リモート接続文字列] ボックスに、新しい SQL Server Express アプリケーションデータベースを指す次の接続文字列を入力します。In the Remote connection string box, enter the following connection string that points to the new SQL Server Express application database.

    Data Source=.\SQLExpress;Initial Catalog=ContosoUniversity;Integrated Security=True
    

    配置プロセスでは、配置された Web.config ファイルにこの接続文字列を格納します。これは、この接続文字列を実行時に使用するためです。The deployment process puts this connection string in the deployed Web.config file because Use this connection string at runtime is selected.

    また、メンバーシップデータベースの接続文字列と同じ方法で、サーバーエクスプローラーからアプリケーションデータベースの接続文字列を取得することもできます。You can also get the application database connection string from Server Explorer in the same way you got the membership database connection string.

  2. [Code First Migrations の実行 (アプリケーションの起動時に実行)] を選択します。Select Execute Code First Migrations (runs on application start).

    このオプションを選択すると、配置プロセスによって、配置された Web.config ファイルが MigrateDatabaseToLatestVersion 初期化子を指定するように構成されます。This option causes the deployment process to configure the deployed Web.config file to specify the MigrateDatabaseToLatestVersion initializer. この初期化子は、配置後にアプリケーションが初めてデータベースにアクセスしたときに、データベースを最新バージョンに自動的に更新します。This initializer automatically updates the database to the latest version when the application accesses the database for the first time after deployment.

発行プロファイルの変換を構成するConfigure publish profile transforms

  1. [閉じる] を選択します。Select Close. 変更を保存するかどうかを確認するメッセージが表示されたら、[はい] を選択します。Select Yes when you are asked if you want to save changes.

  2. ソリューションエクスプローラーで、 [プロパティ][publishprofiles] の順に展開します。In Solution Explorer, expand Properties, expand PublishProfiles.

  3. [ Customprofile. pubxml ] を右クリックし、名前を「 Test pubxml」に変更します。Right-click CustomProfile.pubxml and rename it Test.pubxml.

  4. [ Pubxml] を右クリックします。Right-click Test.pubxml. [構成の変換の追加] を選択します。Select Add Config Transform.

    [構成変換の追加] メニュー

    Visual Studio は、 web.config変換ファイルを作成して開きます。Visual Studio creates the Web.Test.config transform file and opens it.

  5. Web.config 変換ファイルで、開始構成タグの直後に次のコードを挿入します。In the Web.Test.config transform file, insert the following code immediately after the opening configuration tag.

    <appSettings>
        <add key="Environment" value="Test" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
    </appSettings>
    

    テスト発行プロファイルを使用すると、この変換によって環境インジケーターが "Test" に設定されます。When you use the Test publish profile, this transform sets the environment indicator to "Test". デプロイされたサイトでは、"Contoso 大学" H1 見出しの後に "(Test)" と表示されます。In the deployed site, you'll see "(Test)" after the "Contoso University" H1 heading.

  6. ファイルを保存して閉じます。Save and close the file.

  7. Web.config ファイルを右クリックし、 [プレビューの変換] を選択して、コード化した変換によって予想される変更が生成されるようにします。Right-click the Web.Test.config file and select Preview Transform to make sure that the transform you coded produces the expected changes.

    Web.config のプレビューウィンドウには、 web.config 変換と web.config 変換の両方を適用した結果が表示されます。The Web.config Preview window shows the result of applying both the Web.Release.config transforms and the Web.Test.config transforms.

デプロイの更新をプレビューするPreview the deployment updates

  1. Web の発行ウィザードをもう一度開きます (ContosoUniversity プロジェクトを右クリックし、 [発行][プレビュー] の順に選択します)。Open the Publish Web wizard again (right-click the ContosoUniversity project, select Publish, then Preview).

  2. [プレビュー] ダイアログボックスで [プレビューの開始] を選択すると、コピーされるファイルの一覧が表示されます。In the Preview dialog box, select Start Preview to see a list of the files that will be copied.

    発行のプレビュー

    また、[データベースのプレビュー ] リンクを選択して、メンバーシップデータベースで実行されるスクリプトを確認することもできます。You can also select the Preview database link to see the scripts that will run in the membership database. (Code First Migrations 配置に対して実行されるスクリプトはありません。そのため、アプリケーションデータベースをプレビューすることはできません)。(No scripts are run for Code First Migrations deployment, so there's nothing to preview for the application database.)

  3. [発行] を選択します。Select Publish.

    Visual Studio が管理者モードでない場合は、アクセス許可のエラーメッセージが表示されることがあります。If Visual Studio is not in administrator mode, you might get a permissions error message. その場合は、Visual Studio を閉じて、管理者モードで開き、もう一度発行してみてください。In that case, close Visual Studio, open it in administrator mode, and try to publish again.

    Visual Studio が管理者モードの場合、 [出力] ウィンドウは成功したビルドと発行を報告します。If Visual Studio is in administrator mode, the Output window reports successful build and publish.

    Output_window_publish_Test

    発行プロファイルの [接続] タブの [送信先 url] ボックスに url を入力した場合は、コンピューターの IIS で実行されている Contoso 大学のホームページがブラウザーによって自動的に開きます。If you entered the URL in the Destination URL box on the publish profile Connection tab, the browser automatically opens to the Contoso University Home page running in IIS on your computer.

テスト環境でテストするTest in the test environment

環境インジケーターには、"(Dev)" ではなく "(Test)" と表示されます。これは、環境インジケーターのweb.config 変換が成功したことを示しています。Notice that the environment indicator shows "(Test)" instead of "(Dev)," which shows that the Web.config transformation for the environment indicator was successful.

インストラクターページを実行して、Code Firstがインストラクターのデータでデータベースをシード処理したことを確認します。Run the Instructors page to verify that Code First seeded the database with instructor data. このページを選択すると、Code First によってデータベースが作成され、Seed メソッドが実行されるため、読み込みに数分かかる場合があります。When you select this page, it may take a few minutes to load because Code First creates the database and then runs the Seed method. (これは、アプリケーションがデータベースにアクセスしようとしていないためにホームページを使用していた場合には行われませんでした)。(It didn't do that when you were on the home page because the application didn't try to access the database yet.)

[Students] タブを選択して、デプロイされたデータベースに学生がいないことを確認します。Select the Students tab to verify that the deployed database has no students.

学生メニューから [学生の追加] を選択します。Select Add Students from the Students menu. 学生を追加し、 [Students] ページで新しい学生を表示します。Add a student, and then view the new student in the Students page. これにより、データベースへの書き込みが正常に完了したことが確認されます。This verifies that you can successfully write to the database.

[コース] メニューの [クレジットの更新] を選択します。From the Courses menu, select Update Credits. [更新プログラムのクレジット] ページには管理者権限が必要であるため、 [ログイン] ページが表示されます。The Update Credits page requires administrator permissions, so the Log In page is displayed. 前の手順で作成した管理者アカウントの資格情報を入力します ("admin" と "devpwd")。Enter the administrator account credentials that you created earlier ("admin" and "devpwd"). [更新プログラムのクレジット] ページが表示されます。The Update Credits page is displayed. これにより、前のチュートリアルで作成した管理者アカウントがテスト環境に正しく配置されていることを確認します。This verifies that the administrator account that you created in the previous tutorial was correctly deployed to the test environment.

C:\inetpub\wwwroot\ContosoUniversityフォルダー内に、プレースホルダーファイルのみを含むELMAHフォルダーが存在することを確認します。Verify that an ELMAH folder exists in the c:\inetpub\wwwroot\ContosoUniversity folder with only the placeholder file in it.

Code First Migrations の web.config の自動変更を確認するReview the automatic Web.config changes for Code First Migrations

デプロイされたアプリケーションのweb.configファイルをC:\inetpub\wwwroot\ContosoUniversityで開き、データベースを最新バージョンに自動的に更新するように配置プロセスが構成さ Code First Migrations れている場所を確認できます。Open the Web.config file in the deployed application at C:\inetpub\wwwroot\ContosoUniversity and you can see where the deployment process configured Code First Migrations to automatically update the database to the latest version.

また、配置プロセスでは、データベーススキーマを更新するために排他的に使用する Code First Migrations 用の新しい接続文字列も作成しました。The deployment process also created a new connection string for Code First Migrations to use exclusively for updating the database schema:

Database_Publish 接続文字列

この追加の接続文字列を使用すると、データベーススキーマの更新用に1つのユーザーアカウントを指定し、アプリケーションデータアクセスに別のユーザーアカウントを指定することができます。This additional connection string enables you to specify one user account for database schema updates and a different user account for application data access. たとえば、db _所有者ロールを、 db_datawriterロールと共に Code First Migrations およびdb_ アプリケーションに割り当てることができます。For example, you could assign the db_owner role to Code First Migrations and db_datareader with db_datawriter roles to the application. これは、アプリケーション内の悪意のある可能性のあるコードによってデータベーススキーマが変更されないようにする、一般的な多層防御パターンです。This is a common defense-in-depth pattern that prevents potentially malicious code in the application from changing the database schema. (たとえば、SQL インジェクション攻撃が成功した場合に発生する可能性があります)。これらのチュートリアルでは、このパターンは使用しません。(For example, this might happen in a successful SQL injection attack.) These tutorials don't use this pattern. このパターンをシナリオに実装するには、次の手順を実行します。To implement this pattern in your scenario, take these steps:

  1. Web の発行ウィザードの [設定] タブで、完全なデータベーススキーマ更新権限を持つユーザーを指定する接続文字列を入力します。In the Publish Web wizard under the Settings tab, enter the connection string that specifies a user with full database schema update permissions. [実行時にこの接続文字列を使用する] チェックボックスをオフにします。Clear the Use this connection string at runtime check box. 配置された Web.config ファイルで、これが DatabasePublish 接続文字列になります。In the deployed Web.config file, this becomes the DatabasePublish connection string.

  2. アプリケーションで実行時に使用する接続文字列の Web.config ファイル変換を作成します。Create a Web.config file transformation for the connection string that you want the application to use at run time.

まとめSummary

これで、開発用コンピューター上の IIS にアプリケーションを配置し、そこでテストしました。You've now deployed your application to IIS on your development computer and tested it there.

テストのホームページ

これにより、展開プロセスによって、アプリケーションのコンテンツが適切な場所にコピーされたことが確認されます (展開する必要のないファイルは除外されます)。また、展開時に IIS が正しく構成されていることを Web 配置ます。This verifies that the deployment process copied the application's content to the right location (excluding the files that you did not want to deploy) and also that Web Deploy configured IIS correctly during deployment. 次のチュートリアルでは、まだ完了していない配置タスクを検索するテストをもう1つ実行します。この場合、 Elm ahフォルダーのフォルダーアクセス許可を設定します。In the next tutorial, you'll run one more test that finds a deployment task that has not yet been done: setting folder permissions on the Elm ah folder.

詳細情報More information

Visual Studio で IIS または IIS Express を実行する方法の詳細については、次のリソースを参照してください。For information about running IIS or IIS Express in Visual Studio, see the following resources:

アプリケーションが中程度の信頼で実行されている場合に発生する可能性がある問題の詳細については、Rolla サイトの4人の担当者における中程度の信頼での ASP.NET アプリケーションのホスティングFor information about what issues might arise when your application runs in medium trust, see Hosting ASP.NET Applications in Medium Trust on the four Guys from Rolla site.