asp.net 中在虚拟主机上部署membership

本文针对ASP.NET Membership在虚拟主机环境下遇到的数据库访问问题提供了详细的解决方案,包括修改数据库脚本、重写Membership组件等步骤。


由于asp.net membership默认使用dbo用户访问数据库,所以在将memebership部署到虚拟主机上通常会出项数据库无法访问,因为默认的情况下微软的底层访问数据库的时候在表名前面加了数据库用户名,应该说能够操作权限的肯定是管理员,这里用DBO的所有者不是没有道理,谁让一些服务器卖数据库就允许自己用户创建的呢?,造成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>

MyMemeberShipConnectionString是连接数据库的字符串,只要把 原代码里的DBO去掉就行了,垃圾虚拟主机,有兴趣的话可以把数据库用户名做成配置文件的读取,这样更方便.下班了,走!

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值