建立自己的MemberShip数据库
这两天看到PetShop4.0中使用了MemberShip,这些数据存放在MSPetShop4Services数据库中。跟默认生成的 AspNetDB.mdf一样,都有11个表。有aspnet_Applications,aspnet_MemberShip, aspnet_Paths, aspnet_Profile, aspnet_Roles等等。
我们能不能自己手动生成一个这样的数据库呢?我们简单的把这些表导进去,就可以在Asp.net2.0中方便的使用它们吗?答案是不行,因为除了这些表之外,还有40多个存储过程。那我们怎样才能建立自己的MemberShip数据库呢?可以使用工具生成MemberShip表。
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe
建立数据库之后,需要对Web.config文件进行配置:
(在PetShop4.0中的配置)
<connectionStrings>
<!-- SQL connection string for Membership database -->
<add name="SQLMembershipConnString" connectionString="server=(local);user id=mspetshop;password=pass@word1;database=MSPetShop4Services;min pool size=4;max pool size=4;packet size=3072" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<membership defaultProvider="SQLMembershipProvider">
<providers>
<add name="SQLMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="SQLMembershipConnString" applicationName=".NET Pet Shop 4.0" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed"/>
</providers>
</membership>
在这里,改动它的连接字符串就可以使用自己的MemberShip数据库了。
-----------------------------------------------------------------------------------------
续。。。。。
修改上面的配置文件,还是有莫名其妙的问题。Copy了Msdn上的一份配置(Roles Class ,Membership.Providers Property)进行修改,终于OK了。下面是配置好的结果。
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<connectionStrings>
<add name="SqlServices" connectionString="Data Source=MySqlServer;Integrated Security=SSPI;Initial Catalog=aspnetdb;" />
<add name="TempConnectionString" connectionString="Data Source=AYO;Initial Catalog=Temp;User ID=sa"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<authentication mode="Forms" />
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
<providers>
<add name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="TempConnectionString"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
passwordFormat="Hashed"
applicationName="/" />
</providers>
</membership>
<roleManager defaultProvider="SqlProvider"
enabled="true"
cacheRolesInCookie="true"
cookieName=".ASPROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="false"
cookieSlidingExpiration="true"
cookieProtection="All" >
<providers>
<add
name="SqlProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="TempConnectionString"
applicationName="SampleApplication" />
</providers>
</roleManager>
</system.web>
</configuration>