ここでは私が借りているcervi上でASP.NET 2.0のログインコントロールを利用するための手順を記述しています。
他のレンタルサーバでも同様の手順で設定ができると思いますが、サーバの各種設定やその設定を確認する方法については利用されているレンタルサーバの管理者にお問い合わせください。
○事前の確認
・ASP.NET 2.0が利用可能であること
-cerviでは管理者に連絡して2.0が利用できるようにしてもらう必要があります。
・SQL Serverが利用可能であること
-cerviではSQL Server 2000が標準で利用できるようになっています。
・データベース名、接続文字列を確認しておくこと
-cerviでは接続文字列をユーザの設定情報にログインして確認できます。
・データベースに対してSQL クエリを発行できること
-cerviではSQL Server 管理画面からデータベースに接続してクエリを発行することが可能です。
○SQL スクリプトを作成する
ログインコントロールを利用するには、利用しているデータベースにコントロールが必要とするテーブル、ビュー、ストアドプロシージャが含まれていればいいわけです。
.NET Framework 2.0に含まれるaspnet_regsql.exeツールを利用すると、これらのテーブル等を作成してくれるSQL スクリプトを手にいれることができます。
aspnet_regsql.exe -sqlexportonly ファイル名 -A all -d データベース名
このようにオプションをつけて実行すれば、指定したファイルにSQL スクリプトが書き込まれます。
このとき注意する点としては、データベース名を間違えないように入力することだけです。
aspnet_regsql.exeは標準的なインストールでは c:\Windows\Microsoft.NET\Framework\v2.0.50727\ フォルダに存在しています。
○SQL スクリプトを実行する
cerviのSQL Server 管理画面からデータベースに接続し、クエリアナライザツールを使って上記で取得したSQL スクリプトを実行します。
このときデータベース内に以下のオブジェクトが作成されます。
テーブル
aspnet_Applications
aspnet_Membership
aspnet_Paths
aspnet_PersonalizationAllUsers
aspnet_PersonalizationPerUser
aspnet_Profile
aspnet_Roles
aspnet_SchemaVersions
aspnet_Users
aspnet_UsersInRoles
aspnet_WebEvent_Events
ビュー
vw_aspnet_Applications
vw_aspnet_MembershipUsers
vw_aspnet_Profiles
vw_aspnet_Roles
vw_aspnet_Users
vw_aspnet_UsersInRoles
vw_aspnet_WebPartState_Paths
vw_aspnet_WebPartState_Shared
vw_aspnet_WebPartState_User
ストアドプロシージャ
aspnet_AnyDataInTables
aspnet_Applications_CreateApplication
aspnet_CheckSchemaVersion
aspnet_Membership_ChangePasswordQuestionAndAnswer
aspnet_Membership_CreateUser
aspnet_Membership_FindUsersByEmail
aspnet_Membership_FindUsersByName
aspnet_Membership_GetAllUsers
aspnet_Membership_GetNumberOfUsersOnline
aspnet_Membership_GetPassword
aspnet_Membership_GetPasswordWithFormat
aspnet_Membership_GetUserByEmail
aspnet_Membership_GetUserByName
aspnet_Membership_GetUserByUserId
aspnet_Membership_ResetPassword
aspnet_Membership_SetPassword
aspnet_Membership_UnlockUser
aspnet_Membership_UpdateUser
aspnet_Membership_UpdateUserInfo
aspnet_Paths_CreatePath
aspnet_Personalization_GetApplicationId
aspnet_PersonalizationAdministration_DeleteAllState
aspnet_PersonalizationAdministration_FindState
aspnet_PersonalizationAdministration_GetCountOfState
aspnet_PersonalizationAdministration_ResetSharedState
aspnet_PersonalizationAdministration_ResetUserState
aspnet_PersonalizationAllUsers_GetPageSettings
aspnet_PersonalizationAllUsers_ResetPageSettings
aspnet_PersonalizationAllUsers_SetPageSettings
aspnet_PersonalizationPerUser_GetPageSettings
aspnet_PersonalizationPerUser_ResetPageSettings
aspnet_PersonalizationPerUser_SetPageSettings
aspnet_Profile_DeleteInactiveProfiles
aspnet_Profile_DeleteProfiles
aspnet_Profile_GetNumberOfInactiveProfiles
aspnet_Profile_GetProfiles
aspnet_Profile_GetProperties
aspnet_Profile_SetProperties
aspnet_RegisterSchemaVersion
aspnet_Roles_CreateRole
aspnet_Roles_DeleteRole
aspnet_Roles_GetAllRoles
aspnet_Roles_RoleExists
aspnet_Setup_RemoveAllRoleMembers
aspnet_Setup_RestorePermissions
aspnet_UnRegisterSchemaVersion
aspnet_Users_CreateUser
aspnet_Users_DeleteUser
aspnet_UsersInRoles_AddUsersToRoles
aspnet_UsersInRoles_FindUsersInRole
aspnet_UsersInRoles_GetRolesForUser
aspnet_UsersInRoles_GetUsersInRoles
aspnet_UsersInRoles_IsUserInRole
aspnet_UsersInRoles_RemoveUsersFromRoles
aspnet_WebEvent_LogEvent
ロール
aspnet_Membership_FullAccess
aspnet_Membership_BasicAccess
aspnet_Membership_ReportingAccess
aspnet_Profile_FullAccess
aspnet_Profile_BasicAccess
aspnet_Profile_ReportingAccess
aspnet_Roles_FullAccess
aspnet_Roles_BasicAccess
aspnet_Roles_ReportingAccess
aspnet_Personalization_FullAccess
aspnet_Personalization_BasicAccess
aspnet_Personalization_ReportingAccess
aspnet_WebEvent_FullAccess
もしCommunity ServerやDotNetNukeを利用している場合、ここで作成されるオブジェクトと同名のオブジェクトが利用されているため、このSQL スクリプトを実行するとCommunity Server、DotNetNukeが動かなくなる可能性があります。
そのほかのアプリケーションでも事前に手元のマシンで動作を確認しておく必要はあるでしょう。
○web.configで利用するデータベースを指定する
web.configに以下のconnectionStrings設定を追加します。
<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer"
connectionString="server=サーバ名;uid=ユーザID;pwd=パスワード;Trusted_Connection=no;database=データベース名"
providerName="System.Data.SqlClient"/>
</connectionStrings>
ログインコントロールは標準でLocalSqlServerという名前で指定されたデータベースを見に行くようになっています。
上記の設定はこれを上書きします。
connectionStringの部分はcerviのユーザの設定情報で確認したものに置き換えてください。
サーバ名、ユーザ名、パスワード、データベース名といった値は設定情報にきちんと含まれています。
これだけの作業でログインコントロールが利用できるようになります。
実際に動いているサンプルで動作を確認してください。
○もしデータベースをきれいにしたいと思ったら
上記のテーブル、ビュー、ストアドプロシージャ、ロールをすべて削除したい、という場合にはaspnet_regsql.exeツールで削除用のSQL スクリプトを生成します。
aspnet_regsql.exe -sqlexportonly ファイル名 -R all -d データベース名
ここで作成されるSQL スクリプトをデータベースに対して実行すればOKです。
◆ この記事についてのご意見、ご質問は以下のフォーラムにお願いします ◆
http://dotnetfan.org/forums/590/ShowPost.aspx