方法: IIS 上で実行する WCF Data Service を開発する
このトピックでは、WCF Data Services を使用して、Northwind サンプル データベースに基づいてデータ サービスを作成する方法を示します。このサンプル データベースは、インターネット インフォメーション サービス (IIS) 上で動作する ASP.NET Web アプリケーションによってホストされます。 同じ Northwind データ サービスを ASP.NET 開発サーバーで実行する ASP.NET Web アプリケーションとして作成する方法については、「WCF Data Services クイック スタート」を参照してください。
注意
Northwind データ サービスを作成するには、ローカル コンピューターに Northwind サンプル データベースをインストールしておく必要があります。このサンプル データベースをダウンロードするには、ダウンロード ページ「SQL Server 用サンプル データベース」を参照してください。
このトピックでは、Entity Framework プロバイダーを使用してデータ サービスを作成する方法を示します。 その他のデータ サービス プロバイダーを利用することもできます。 詳細については、「データ サービス プロバイダー (WCF Data Services)」を参照してください。
サービスを作成した後に、データ サービス リソースへのアクセスを明示的に提供する必要があります。 詳細については、「方法: データ サービスへのアクセスを有効にする (WCF Data Services)」を参照してください。
IIS 上で実行する ASP.NET Web アプリケーションを作成するには
Visual Studio の [ファイル] メニューで、[新規作成]、[プロジェクト] の順にクリックします。
[新しいプロジェクト] ダイアログ ボックスで、プログラム言語として [Visual Basic] または [Visual C#] のいずれかを選択します。
[テンプレート] ペインで、[ASP.NET Web アプリケーション] を選択します。 メモ : Visual Studio Web Developer を使用する場合は、新しい Web アプリケーションではなく、新しい Web サイトを作成する必要があります。
プロジェクトの名前として「NorthwindService」を入力します。
[OK] をクリックします。
[プロジェクト] メニューで [NorthwindService のプロパティ] を選択します。
[Web] タブで [ローカル IIS Web サーバーを使用する] を選択します。
[仮想ディレクトリの作成]、[OK] の順にクリックします。
管理特権を持つコマンド プロンプトから、次のコマンドを実行します (オペレーティング システムによって異なります)。
32 ビット システム:
"%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -i
64 ビット システム:
"%windir%\Microsoft.NET\Framework64\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -i
これにより、コンピューターに Windows Communication Foundation (WCF) が登録されます。
管理特権を持つコマンド プロンプトから、次のコマンドを実行します (オペレーティング システムによって異なります)。
32 ビット システム:
"%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe" -i -enable
64 ビット システム:
"%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe" -i -enable
これにより、WCF がコンピューターにインストールされた後、IIS は正常に実行されます。 IIS の再起動が必要になる場合があります。
ASP.NET アプリケーションが IIS7 で実行されると、次の手順も実行する必要があります。
IIS マネージャーを開いて [既定の Web サイト] の下にある PhotoService アプリケーションに移動します。
[機能ビュー] で、[認証] をダブルクリックします。
[認証] ページで、[匿名認証] をクリックします。
[操作] ペインで [編集] をクリックして、匿名ユーザーがサイトに接続するセキュリティ プリンシパルを設定します。
[匿名認証資格情報の編集] ダイアログ ボックスで、[アプリケーション プール ID] をクリックします。
重要
ネットワーク サービス アカウントを使用する際、そのアカウントに関連するすべての内部ネットワーク アクセス権を匿名ユーザーに付与します。
SQL Server Management Studio、sqlcmd.exe ユーティリティ、または Visual Studio の Transact-SQL エディターを使用して、Northwind データベースがアタッチされた SQL Server のインスタンスに対して次の Transact-SQL コマンドを実行します。
CREATE LOGIN [NT AUTHORITY\NETWORK SERVICE] FROM WINDOWS; GO
これにより、IIS の実行に使用される Windows アカウントに対して、SQL Server インスタンスのログインが作成されます。 IIS は、これを使用して SQL Server インスタンスに接続できるようになります。
Northwind データベースをアタッチして、次の Transact-SQL コマンドを実行します。
USE Northwind GO CREATE USER [NT AUTHORITY\NETWORK SERVICE] FOR LOGIN [NT AUTHORITY\NETWORK SERVICE] WITH DEFAULT_SCHEMA=[dbo]; GO ALTER LOGIN [NT AUTHORITY\NETWORK SERVICE] WITH DEFAULT_DATABASE=[Northwind]; GO EXEC sp_addrolemember 'db_datareader', 'NT AUTHORITY\NETWORK SERVICE' GO EXEC sp_addrolemember 'db_datawriter', 'NT AUTHORITY\NETWORK SERVICE' GO
これにより、新しいログインに権限が付与され、IIS は Northwind データベースに対してデータの読み取りおよび書き込みを行うことができるようになります。
データ モデルを定義するには
ソリューション エクスプローラーで、ASP.NET プロジェクトの名前を右クリックし、[新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスで [ADO.NET エンティティ データ モデル] を選択します。
データ モデルの名前として「Northwind.edmx」を入力します。
エンティティ データ モデル ウィザードで、[データベースから生成] を選択し、[次へ] をクリックします。
次のいずれかの手順を実行し、データ モデルをデータベースに接続してから [次へ] をクリックします。
データベース接続がまだ構成されていない場合は、[新しい接続] をクリックして新しい接続を作成します。 詳細については、「方法: SQL Server データベースへの接続を作成する」を参照してください。 この SQL Server インスタンスには、Northwind サンプル データベースがアタッチされている必要があります。
または
Northwind データベースに接続するようにデータベース接続が既に構成されている場合は、一覧からその接続を選択します。
ウィザードの最終ページで、データベース内のすべてのテーブルのチェック ボックスをオンにし、ビューおよびストアド プロシージャのチェック ボックスをオフにします。
[完了] をクリックして、ウィザードを終了します。
注意
この生成されたデータ モデルは、エンティティ型の外部キー プロパティを公開します。Visual Studio 2008 を使用して作成したデータ モデルには、これらの外部キー プロパティが含まれません。そのため、Visual Studio 2008 を使用して作成された Northwind データ サービスにアクセスしようとする前に、このバージョンの Northwind データ サービスにアクセスするために作成されたクライアント アプリケーションのクライアント データ サービス クラスを更新する必要があります。
データ サービスを作成するには
ソリューション エクスプローラーで、ASP.NET プロジェクトの名前を右クリックし、[新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスで、[WCF Data Service] をクリックします。
サービスの名前として「Northwind」を入力します。
Visual Studio で新しいサービスの XML マークアップおよびコード ファイルが作成されます。 既定では、コード エディターのウィンドウが開きます。 ソリューション エクスプローラーでは、このサービスに Northwind という名前が付き、拡張子は .svc.cs または .svc.vb になります。
データ サービスのコードで、データ サービスを定義するクラスの定義にあるコメント /* TODO: put your data source class name here */ をデータ モデルのエンティティ コンテナーである型 (この場合は NorthwindEntities) で置き換えます。 クラス定義は次のようになります。
Public Class Northwind Inherits DataService(Of NorthwindEntities)
public class Northwind : DataService<NorthwindEntities>