About
Visual C#
統合開発環境ツール:Visual Studio 2008 Professional
データベース:SQL Server 2005 Developer Edition
OS:Windows7 RC

Objective-C
統合開発環境ツール:Xcode3.1.2
OS:Mac OS X v10.5.7 Leopard
  C#   ASP.NET   Link   Contact
         
プロバイダの作成とweb.Configファイルの設定
 
  無料のExpress Editionはこちらから  
 
 

開発環境

統合開発環境:
Visual Studio 2008 Professional
使用OS:
Windows7 RC

 
 

  プロバイダとは

プロバイダとは、Webアプリケーションにアクセスするユーザアカウントの管理や、グループ(ロール)管理などの構成データを保存するファイルの事を指します。このファイルはSQLデータベースによって構成されているので、ASP.NETでユーザ認証を実装するためにはプロバイダを再構成する必要があります。

プロバイダは必ずしも再構成する必要はありませんが、ASP.NETでは全てのWebアプリケーションが同一のプロバイダを参照するようになっているため、アプリケーションごとにアカウントを管理するにはプロバイダを再構成します。

また、VisualStudioのインストール時にSQL Server Express Editionをインストールしなかった場合や、それ以外のSQLサーバを導入している場合は必ず再構成しなければプロバイダにアクセスできません。

まずは標準設定でプロバイダにアクセスできるかどうか確認してみましょう。「ソリューションエクスプローラ」の上部にある「ASP.NET 構成」ボタンをクリックします。(一番右の地球アイコンをクリックします)


「ASP.NET 構成」をクリックする

「ASP.NET 構成」ボタンをクリックすると、「サイト管理ツール」が表示されます。「サイト管理ツール」を使用すると、ユーザアカウントの管理や、Webアプリケーションの各種設定を画面を見ながら行うことができるのが特徴です。


サイト管理ツールのトップページ

次に、ウィンドウ上部の「セキュリティ」タブをクリックしてください。プロバイダの再構成が必要な場合、以下のように「SQL Serverデータベースに接続できません。」とエラーが表示されてします。


再構成が必要な場合、エラーが表示される


正しく表示されたセキュリティタブの内容

エラーが表示されず、正常にセキュリティタブを開くことができれば、再構成をしなくてもアカウント管理を行うことができます。

  プロバイダを再構成する

プロバイダを再構成するには、まずプロバイダ用のデータベースを新しく作成します。コンピュータのスタートメニューから「コンピュータ」を開き、「システムドライブ」→「Windows」→「Microsoft.NET」→「Framework」→「v2.0.50727」→「aspnet_regsql.exe」を右クリックし、「管理者として実行」を選択します。「ASP.NET SQL Server セットアップウィザード」が表示されますので、「次へ」ボタンをクリックします。


ウィザードのようこそ画面

データベースの新規構成か削除かを選択する画面が表示されますので、ここでは「アプリケーションサービスのためにSQL Serverを構成する(O)」を選択し、「次へ」ボタンをクリックします。


作業の選択画面

次に、SQL Serverがインストールされているサーバー名を入力します。同じコンピュータにSQL Serverをインストールしている場合はそのままで構いません。


ユーザの認証とデータベース名の入力

同じコンピュータ上にSQL Serverがインストールされている場合は認証方法として「Windows認証」を選択します。別のサーバー上にSQL Serverをインストールしており、SQL ServerへのアクセスにSQL Server認証を採用している場合は「SQL Server認証」を選択して「ユーザー名」と「パスワード」を入力します。

データベースには、プロバイダとして作成するデータベースの名前を指定します。<既定>のままだと、データベース名として「aspnetdb」が自動的に設定されます。今回は、例として「aspnetdb」の名前でデータベースを作成するため、ここでは<既定>のままにし、「次へ」をクリックします。

設定の確認画面が表示されますので、データベースを作成するサーバと、データベースの名前に間違いないことを確認して「次へ」ボタンをクリックします。


ウィザードの確認画面

プロバイダ用のデータベースが正常に作成されると以下のような画面に切り替わりますので、「完了」ボタンを押してウィザードを終了させてください。


ウィザードの完了

なお、管理者としてこのウィザードを実行していない場合や、SQL Server認証のユーザー名、またはパスワード名が間違えている場合は、以下のようなエラーメッセージが表示されてしまいますので注意が必要です。


表示されたエラーメッセージ

エラーメッセージに関する補足:
「SQL Serverデータベースの作成または変更に失敗しました。」とエラーメッセージが表示されます。例外を確認すると「SQL Serverデータベースに接続できません。」と表示されているので、管理者としてこのウィザードを実行できていないか、SQL Server認証のユーザー名かパスワードが間違っていることがわかります。

  web.Configファイルを設定する

これでプロバイダ用のデータベースが作成できましたので、次はこのプロバイダを使用できるようweb.Configファイルを変更しましょう。VisualStudioをいったん終了し、VisualStudioのアイコンを右クリックして「管理者として実行」を選択します。

データベースとの接続には、「接続文字列」と呼ばれるデータベースへの接続を行なうのに必要な情報を収めたコードが必要になります。接続文字列を確認するには、実際にデータベースと接続することで確認することができます。

それでは、先程作成したデータベースを実際に接続してみましょう。メニューバーのから「表示」→「その他のウィンドウ」→「サーバー エクスプローラ」をクリックして「サーバー エクスプローラ」ウィンドウを表示します。


「サーバエクスプローラ」ウィンドウ

サーバーエクスプローラウィンドウの上部にあるボタンの中から「データベースへの接続」をクリックすると、「接続の追加」ウィンドウが表示されます。「サーバー名」のドロップダウンリストから、プロバイダ用のデータベースを作成したサーバを選択します。Windows認証時、管理者としてVisualStudioを実行しておかないと、データベースを選択できません。テスト接続しても、「ログインできませんでした」とエラーメッセージが表示されてしまいます。


ドロップダウンリストから接続するサーバ名を選択する

次に、データベースにするログオン方法を選択します。同じコンピュータ内にプロバイダを作成した場合は「Windows認証を使用する」を選択し、外部のサーバにプロバイダを作成した場合で、データベースへのアクセスにSQLサーバ認証を採用している場合は「SQL Server認証を使用する」を選択してデータベースアクセス用のユーザー名とパスワードを入力します。

最後にプロバイダ用のデータベースを指定します。「データベース名の選択または入力」の下にあるブルダウンメニューから先程作成した「aspnetdb」を選択し、「OK」ボタンをクリックします。


接続するデータベースの選択

「サーバーエクスプローラ」を確認してみると、「データ接続」に「aspnetdb」が追加され、データベースと接続できたことが確認できます。


「aspnetdb」データベースの中身

「aspnetdb」データベースを選択した状態でプロパティウィンドウを確認すると、一番下の欄に「接続文字列」と書かれたプロパティがあります。これがデータベースと接続するために必要なコードになりますので、右クリックして「コピー」を選択します。


接続文字列をコピーしておく

実際にプロバイダを適用したいプロジェクトを開き、エクスプローラウィンドウから「web.Config」ファイルをダブルクリックしてコードを表示させます。コードの中から「<connectionStrings/>」と書かれた部分を探し出し、以下のように内容を変更します。
1
2
3
4
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="LocalSqlServer" connectionString="接続文字列を貼り付ける" />
</connectionStrings>

2行目では、既に登録されているプロバイダを削除し、3行目で改めて新しいプロバイダを指定しています。コードの変更を終え、サイト管理ツールの「セキュリティ」タブをクリックすると、問題なくアクセスできるようになったことがわかります。


正しく表示されたセキュリティタブの内容

なお、Windows認証でデータベースにアクセスし、データベースの接続文字列を取得した場合、VisualStudioを管理者権限で実行していないと、「SQL Server データベースに接続できません。」とエラーメッセージが表示されますので注意してください。


データベースに接続する際は管理者権限が必要
   
Search:

Count:
inserted by FC2 system