構成手順 3: データ ソース設定を構成する
作成者: Keith Newman および Robert McMurray
ASP.NET Web サイトのこの構築フェーズでは IIS で利用できるデータ ソースの設定を構成します。
3.1. データ ソース接続文字列
このセクションでは、IIS マネージャー UI またはコマンドラインを使用して、IIS でデータベース接続文字列を作成する方法について説明します。
「IIS で ASP.NET Web サイトを計画する」では、接続文字列を追加する必要について次の設計上の決定を行いました。
- 接続文字列の名前を指定します。
- データベースが配置されているサーバーを指定します。
- データベースの名前を指定します。
- Windows 統合セキュリティを使用していない場合、資格情報を提供します。
UI を使用して、データベース接続文字列を作成する
IIS マネージャーを開き、管理するレベルに移動します。
[機能ビュー] で、[接続文字列] をダブルクリックします。
[接続文字列] ページで、[操作] ウィンドウの [追加] クリックします。
[接続文字列の追加] ダイアログ ボックス内の [名前] テキスト ボックスに MyConnection など、接続文字列の名前を入力します。
Note
IIS マネージャーで入力する名前は、この接続文字列を使用してデータを取得するためにアプリケーション コードで参照する名前と同じです。
[SQL Server] オプションを選択されている場合、データベースをホストしているサーバーの名前を [サーバー] テキスト ボックスに入力し、データベースの名前を [データベース] テキスト ボックスに入力します。
[資格情報] で、次のいずれかを選択します。
- [Windows 統合セキュリティを使用する] を選択します。
- [資格情報を指定する] を選択し、[設定] をクリックします。 サーバーとデータベースに接続できるアカウントのユーザー名とパスワードを [ユーザー名] テキスト ボックスと [パスワード] テキスト ボックスに入力します。 次に、同じパスワードを [パスワードの確認] テキスト ボックスに入力し、[OK] をクリックします。
OK をクリックします。
コマンド ラインを使用して、データベース接続文字列を作成する
データベース接続文字列を作成するには、次の構文を使用します。
appcmd set config /commit:MACHINE /section:connectionStrings /+"[connectionString='string', name='string', providerName='string']"
変数 connectionString='string'
は接続文字列値であり、変数 name='string'
は接続文字列値へのアクセスに使用するキーであり、変数 providerName='string'
は基になるデータ ストアへのアクセスに使用する ADO.NET プロバイダーの名前です。 たとえば、Northwind データベースを使用するアプリケーションの接続文字列を作成するには、コマンド プロンプトで次のように入力し、Enter キーを押します。
appcmd set config /commit:MACHINE /section:connectionStrings /+"[connectionString='Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;', name='Northwind', providerName='System.Data.SqlClient ']"
3.2. ASP.NET プロバイダー
このセクションでは、IIS マネージャー UI またはコマンドラインのいずれかを使用して、IIS に .NET プロバイダーを追加する方法について説明します。
「IIS で ASP.NET Web サイトを計画する」では、.NET プロバイダーを IIS へ追加することについて、次のような設計上の決定を行いました。
プロバイダーが提供する IIS 機能 (.NET プロファイル、.NET ロール、または .NET ユーザー) を選択します。
プロバイダーの種類を選択します。
プロバイダーの名前を入力します。
選択した機能が .NET ユーザーである場合、以下から必要なプロバイダーの動作を選択します。
- パスワード リセットを有効にする
- パスワードの取得を有効にする
- 質問と答えを必須とする
- 一意の電子メールを必須とする
- セキュリティで保護された形式でパスワードを保存する
データベースへの接続文字列の名前を指定します。
アプリケーションの名前を入力します。
UI を使用して、プロバイダーを追加する
IIS マネージャーを開き、管理するレベルに移動します。
[機能ビュー] で [プロバイダー] をダブルクリックします。
[プロバイダー] ページの [機能] で、次の機能のいずれかを選択します。
- [.NET ロール]: ASP.NET ロール管理サービス ("ロール マネージャー") とロール データ ソースの間のインターフェイスを提供するようにプロバイダーを構成します。
- [.NET ユーザー]: ASP .NET メンバーシップ サービスとメンバーシップ データ ソース間にインターフェイスを提供するように、プロバイダーを構成します。
- [.NET プロファイル]: ASP .NET プロファイル サービスとプロファイル データ ソース間にインターフェイスを提供するように、プロバイダーを構成します。
[操作] ウィンドウで、[追加] をクリックします。
[プロバイダーの追加] ダイアログ ボックスで、[種類] ドロップダウン リストからプロバイダーの種類を選択します。
[名前] テキスト ボックスで、プロバイダーの名前を入力します。
手順 3 で [.NET ユーザー] 機能を選択した場合、[プロファイル プロパティ] セクションの [動作] で、次の動作の 1 つまたは複数の値を True に設定して動作を有効にします。
EnablePasswordReset: のプロバイダーの ResetPassword メソッドを使用してパスワード リセットできるかどうかを示します。 既定の設定は False です。
EnablePasswordRetrieval: プロバイダーの GetPassword メソッドを使って、パスワードを取得できるかどうかを示します。 既定の設定は False です。
重要
Active Directory プロバイダーなどの一部のプロバイダーでは、パスワードの取得をサポートしていません。 これらのプロバイダーでは、enablePasswordRetrieval 属性の値は常に False であり、構成では変更できません。
RequiresQuestionAndAnswer: プログラムからプロバイダーの GetPassword メソッドと ResetPassword メソッドを呼び出した場合に、パスワードの回答を提供するかどうかを示します。 既定の設定は False です。
RequiresUniqueEmail: 登録された各ユーザーが一意のメール アドレスを持っている必要があるかどうかを示します。 既定の設定は False です。
StorePasswordInSecureFormat: パスワードがハッシュされているかどうかを示します。 既定の設定は False です。
[データ] で、データベースへの接続に使用する接続文字列の名前を ConnectionStringName テキスト ボックスに入力します。 (これは、[接続文字列] 機能で構成した接続文字列と同じです。接続文字列の構成方法の詳細については、「IIS 7 での接続文字列の構成」を参照してください。この手順の手順 5 で [WindowsTokenRoleProvider] を選択した場合、接続文字列名は省略可能です。
必要に応じて、[プロファイル プロパティ] セクションの [全般] で [ApplicationName] テキスト ボックスにアプリケーションの仮想パスを入力します。 [ApplicationName] テキスト ボックスで値を指定しない場合、メンバーシップ API の規定値は HttpContext.Current.Request.ApplicationPath になります。 このパスは、実行時にのみ特定できます。
必要に応じて、[プロファイル プロパティ] セクションの [全般] で [説明] テキスト ボックスにプロバイダーの説明を入力します。
OK をクリックします。
コマンド ラインを使用して、プロバイダーを追加する
.NET のロール プロバイダーを追加するには、次の構文を使用します。
appcmd set config /commit:MACHINE /section:roleManager /+"providers.[name='string', type='string', connectionStringName='string', applicationName='string']"
変数 name='string'
はプロバイダーの名前です。 変数 type='string'
はプロバイダーの種類です。 変数 connectionStringName='string'
は、データベースへの接続に使用される接続文字列の名前です。 変数 applicationName='string'
は省略可能であり、アプリケーションの仮想パスです。 たとえば、SqlRoleProvider
クラスを使ってロール情報の保存と取得を行うように ASP .NET アプリケーションを構成するには、コマンド プロンプトで次のように入力し、Enter キーを押します。
appcmd set config /commit:MACHINE /section:roleManager /+"providers.[name='SqlProvider', type='System.Web.Security.SqlRoleProvider', connectionStringName='SqlServices', applicationName='SampleApplication']"
.NET ユーザー プロバイダーを追加するには、次の構文を使用します。
appcmd set config /commit:MACHINE /section:membership /+"providers.[name='string', type='string', connectionStringName='string', applicationName='string', enablePasswordReset='true|false', enablePasswordRetrieval='true|false', requiresQuestionAndAnswer='true|false', requiresUniqueEmail='true|false', storePasswordInSecureFormat='true|false']"
この構文は、次の項目で構成されます。
- 変数
name='string'
はプロバイダーの名前です。 - 変数
type='string'
はプロバイダーの種類です。 - 変数
connectionStringName='string'
は、データベースへの接続に使用される接続文字列の名前です。 - 変数
applicationName='string'
は省略可能であり、アプリケーションの仮想パスです。 - 変数
enablePasswordReset=true
は、プロバイダー ResetPassword メソッドによるパスワードのリセットを有効にします。 既定の設定はfalse
です。 - 変数
enablePasswordRetrieval=true
は、プロバイダー GetPassword メソッドによるパスワードの取得を有効にします。 既定の設定はfalse
です。 - 変数
requiresQuestionAndAnswer=true
では、プログラムがプロバイダーの GetPassword メソッドと ResetPassword メソッドを呼び出す際に、パスワードの回答を入力する必要があります。 既定の設定はfalse
です。 - 変数
requiresUniqueEmail=true
では、登録された各ユーザーに一意の電子メール アドレスが必要です。 既定の設定はfalse
です。 - 変数
storePasswordInSecureFormat=true
では、すべてのパスワードをハッシュする必要があります。 既定の設定はfalse
です。
たとえば、SqlMembershipProvider
クラスを使ってユーザー情報の保存と取得を行うように ASP .NET アプリケーションを構成するには、コマンド プロンプトで次のように入力し、Enter キーを押します。
appcmd set config /commit:MACHINE /section:membership /+"providers.[name='SqlProvider', type='System.Web.Security.SqlMembershipProvider', connectionStringName='SqlServices', applicationName='/', enablePasswordRetrieval='False', enablePasswordReset='True', requiresQuestionAndAnswer='True']"
.NET プロファイル プロバイダーを追加するには、次の構文を使用します。
appcmd set config /commit:MACHINE /section:profile /+"providers.[name='string', type='string', connectionStringName='string', applicationName='string']"
変数 name='string'
はプロバイダーの名前です。 変数 type='string'
はプロバイダーの種類です。 変数 connectionStringName='string'
は、データベースへの接続に使用される接続文字列の名前です。 変数 applicationName='string'
は省略可能であり、アプリケーションの仮想パスです。 たとえば、SqlProfileProvider
クラスを使ってプロファイル情報の保存と取得を行うように ASP .NET アプリケーションを構成するには、コマンド プロンプトで次のように入力し、Enter キーを押します。
appcmd set config /commit:MACHINE /section:profile /+"providers.[name='SqlProvider', type='System.Web.Profile.SqlProfileProvider', connectionStringName='SqlServices', applicationName='SampleApplication']"
3.3. .NET プロファイル
このセクションでは、プロファイル プロパティとプロファイル グループの追加方法について説明します。
「IIS で ASP.NET Web サイトを計画する」では、プロファイル プロパティとグループを IIS へ追加することについて、次のような設計上の判断を決定しました。
- 各プロファイル プロパティでは、プロパティ名、データ型 (文字列、ブール値など)、既定値、シリアル化オプション (文字列、XML、バイナリ、または特定のプロバイダー)、読み取り専用かどうか、匿名ユーザーが使用できるかどうかなどを指定します。
- 各プロファイル グループでは、グループ名を指定します。
UI を使用して、.NET プロファイル プロパティを追加する
IIS マネージャーを開き、管理するレベルに移動します。
[機能ビュー] で [.NET プロファイル] をダブルクリックします。
[操作] ウィンドウで [プロパティの追加] をクリックして .NET プロファイル プロパティを追加します。また、.NET プロファイル プロパティをグループに追加するには、.NET プロファイル プロパティの追加先グループを選択して、[プロパティをグループに追加] をクリックします。
[.NET プロファイル プロパティの追加] ダイアログ ボックスで、.NET プロファイル プロパティの名前を [名前] テキスト ボックスに入力します。
[データ型] で、次のいずれかのデータ型を選択します。
- System.Boolean: .NET プロファイル プロパティを True または False のいずれかの値に設定します。
- System.Char: ユニコード文字を含むように .NET プロファイル プロパティを構成します。
- System.DateTime: .NET プロファイル プロパティを日付と時刻を含むように構成します。値の範囲は、西暦 (A.D.) または共通紀元 (C.E.) の0001 年 1 月 1 日 12:00:00 (真夜中) から、A.D. (C.E.) 9999 年 12 月 31 日 11:59:59 (午後) までです。(C.E.)
- System.Decimal: .NET プロファイル プロパティを10 進数を含むように構成します。値の範囲は、- 79,228,162,514,264,337,593,543,950,335 から + 79,228,162,514,264,337,593,543,950,335 です。 10 進数の値の型は、多くの整数桁と小数桁を必要とし、丸め誤差があってはならない財務計算に適しています。
- System.Double: .NET プロファイル プロパティを倍精度の 64 ビット 数を含むように構成します。値の範囲は - 1.79769313486232e308 から + 1.79769313486232e308 で、正の 0 または 負の 0、PositiveInfinity、NegativeInfinity、および NaN を指定することもできます。 Double 値型の 詳細については、「Double 構造体 」を参照してください。
- System.Int32: .NET プロファイル プロパティを整数を含むように構成します。値の範囲は - 2,147,483,648 から + 2,147,483,647 です。
- System.Int64: .NET プロファイル プロパティを整数を含むように構成します。値の範囲は - 9,223,372,036,854,775,808 から + 9,223,372,036,854,775,807 です。
- System.Single: .NET プロファイル プロパティを単精度の 32 ビットの値を含むように構成します。値の範囲は - 3.402823e38 ~ + 3.402823e38 で、正の 0 または 負の 0、PositiveInfinity、NegativeInfinity、および NaN を指定することもできます。 単精度値の型の詳細については、「単精度構造体 」を参照してください。
- System.String: .NET プロファイル プロパティをテキスト文字列を表す Char 構造体のシーケンシャルなコレクションとなるように、構成します。 これは既定の設定です。
[既定値] テキスト ボックスで、プロパティを初期化する値を入力します。
[シリアル化オプション] で、以下のいずれかのシリアル化フォーマッタを選択します。
- String: 設定プロパティがプレーンテキストとしてシリアル化されている場合に、このオプションを選択します。 これは既定の設定です。
- XML: パブリック プロパティとパブリック フィールドだけをシリアル化する場合に、このオプションを選択します。 XML シリアル化では、データ型の正確さは保持されません。 このオプションは、データを使用するアプリケーションを制限することなく、データを提供または使用する場合に有効です。 XML はオープンな規格であるため、Web 上のデータを共有する場合に、有用な選択肢となります。
- Binary: データ型を正確に保持するには、このオプションを選択します。 バイナリのシリアル化は、1 つのアプリケーションを複数起動した場合に、オブジェクトの状態を保持するために有効です。 たとえば、クリップボードを出力先としてオブジェクトをシリアル化することによって、そのオブジェクトを異なるアプリケーション間で共有できます。 オブジェクトのシリアル化は、ストリーム、ディスク、メモリに対して、またはネットワーク経由で実行できます。
- プロバイダー固有: 設定プロバイダーがプロパティや種類に関して暗黙の知識を持っていて、適切なシリアル化メカニズムを選択することができる場合にこのオプションを選択します。 このオプションは、カスタムのシリアル化に有効です。
[読み取り専用] チェック ボックスをオンにすると、.NET プロファイル プロパティが変更できないように構成できます。
[匿名ユーザーによる利用を可能にする] ボックスをオンにすると、認証されていないユーザーが .NET プロファイル プロパティを利用できるようになります。
OK をクリックします。
コマンド ラインを使用して、.NET プロファイル プロパティを追加する
.NET プロファイル プロパティを追加するには、次の構文を使用します。
appcmd set config /commit:MACHINE /section:profile /+"properties.[name='string', type='string', defaultValue='string', serializeAs='String|Xml|Binary|ProviderSpecific', readOnly='true|false', allowAnonymous='true|false']"
変数 name='string'
はプロファイル プロパティの名前です。 変数 type='string'
はデータ型です。 変数 defaultValue='string'
はプロファイル プロパティを初期化する値です。 変数 serializeAs='String|Xml|Binary|ProviderSpecific'
はシリアル化フォーマッタを設定します。 変数 readOnly=true
は、.NET プロファイル プロパティを変更できないように構成します。 既定値は false
です。 変数 allowAnonymous=true
を使用すると、認証されていないユーザーが .NET プロファイル プロパティを使用できるようになります。 既定値は false
です。 たとえば、最近使用した検索一覧のコレクションを保持しているプロファイル プロパティを指定するには、コマンド プロンプトで次のように入力し、Enter キーを押します。
appcmd set config /commit:MACHINE /section:profile /+"properties. [name='RecentSearchList', type='System.Collections.Specialized.StringCollection', serializeAs='Xml', allowAnonymous='true']"
UI を使用して、.NET プロファイル グループを追加する
- IIS マネージャーを開き、管理するレベルに移動します。
- [機能ビュー] で [.NET プロファイル] をダブルクリックします。
- [操作] ウィンドウで [グループの追加] をクリックします。
- [グループの追加] ダイアログ ボックスの [名前] テキスト ボックスに .NET プロファイル グループの名前を入力し、[OK] をクリックします。
3.4. .NET のロール
このセクションでは、IIS マネージャーの UI を使用して .NET のロールを追加する方法について説明します。
UI を使用して、.NET のロールを追加する
- IIS マネージャーを開き、管理するレベルに移動します。
- [機能ビュー] で [.NET のロール] をダブルクリックします。
- [操作] ウィンドウで、[追加] をクリックします。
- [.NET のロールを追加] ダイアログ ボックスの [名前] テキスト ボックスにロールの名前を入力し、[OK] をクリックします。
3.5. .NET ユーザー
このセクションでは、IIS マネージャーの UI を使用して .NET ユーザーを構成する方法について説明します。
「IIS で ASP.NET Web サイトを計画する」では、IIS に追加するユーザーごとに、以下の設計上の判断を行いました。
- ユーザー名
- メール
- Password
- 質問
- 回答
- ロール (単一または複数)
UI を使用して、.NET の役割を追加する
IIS マネージャーを開き、管理するレベルに移動します。
[機能ビュー] で [.NET ユーザー] をダブルクリックします。
[操作] ウィンドウで、[追加] をクリックします。
[.NET ユーザー アカウントの詳細] ダイアログ ボックスで、次の情報を入力します。
- ユーザー名 (一意である必要があります)。
- 電子メール (標準形式 name@domain.com を使用する必要があります)
- パスワード (強力なパスワードである必要があります)
- パスワードの確認 (パスワードと一致する必要があります)
- 質問 (カスタム質問を入力するか、一覧から選択します)。
- 質問に回答します。
[次へ] をクリックして、このユーザーのロールを選択します。 [.NET のロール] を有効にしていない場合は、[完了] をクリックします。
[.NET ユーザーのロール] ダイアログ ボックスで、必要に応じて [ロール] ボックスから使用可能なロールを選択し、[完了] をクリックします。