C#.NET中的MemberShip应用:在虚拟主机上部署asp.net membership-转

由于asp.net membership默认使用dbo用户访问数据哭,所以在将memebership部署到虚拟主机上通常会出项数据库无法访问,造成memebership无法正常使用,下面就如何解决这一问题分享一些个人的经验,避免大家再走弯路:

1、在虚拟主机上建立memebership数据库时(基本虚拟主机sql server数据库都不会提供dbo用户),将membership数据库的sql脚本中所有[dbo].和dbo.去除,这样在建立membership数据库时,所有对象将使用当前连接用户创建。

2、到microsoft下载membership源码,地址:http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi,默认安装(推荐)后可以在C:\Program Files\ASP.NET Provider Toolkit SQL Samples下找到源项目,将该项目添加到你的解决方案中,并且在需要使用的项目中引用该项目。

3、重写membership,将memebership项目中所有源代码中的dbo.去除,重新生成membership项目,这时在你的项目的bin目录下将生成一个ProviderToolkitSampleProviders.dll文件。

4、位置web.config文件中的membership节如下:
<membership>
      <providers>
        <clear/>
        <add 
          connectionStringName="MyMemeberShipConnectionString" 
          enablePasswordRetrieval="false" 
          enablePasswordReset="true" 
          requiresQuestionAndAnswer="false" 
          applicationName="/" 
          requiresUniqueEmail="true" 
          passwordFormat="Hashed" 
          maxInvalidPasswordAttempts="5" 
          minRequiredPasswordLength="4" 
          minRequiredNonalphanumericCharacters="0" 
          passwordAttemptWindow="10" 
          passwordStrengthRegularExpression="" 
          name="AspNetSqlMembershipProvider" 
          type="Microsoft.Samples.SqlMembershipProvider"/>
      </providers>
    </membership>

如果使用了webpart,web.config文件中webpart节配置如下:
    <webParts>
      <personalization>
        <providers>
          <remove name="AspNetSqlPersonalizationProvider"/>
          <add 
            connectionStringName="WebScheduleConnectionString" 
            name="AspNetSqlPersonalizationProvider" 
            type="Microsoft.Samples.SqlPersonalizationProvider"/>
        </providers>
      </personalization>
    </webParts>

大功告成,希望microsoft在下一个membership版本中可以改进一下,不要再强迫大家使用dbo用户了。

posted @ 2012-11-08 16:06  rongnianwu  阅读(288)  评论(0)    收藏  举报