平时做练习的时候,用的Membership虽然是SQL方式的,但版本是SQL Express,连接的是网站App_Data文件夹里的mdf文件。如果要把同样的Membership部署到SQL完整版上是会爆的。比如你开发的时候自己用的Express,部署到你的主机服务商时,人家当然用的付费购买的完整版。这样就会爆。网上查了些资料,说Membership是SQL Express独有的功能,我不相信。所以自己开荒了一下,并且成功了。分享给大家。

首先,连接网站App_Data目录的mdf文件,确实只有Express版可以。所以完整版的SQL Server必须在数据库引擎里建立数据库,不要放在网站目录下。

建完数据库以后,打开VS2010的命令行环境,运行aspnet_regsql,你会看到下面这个界面。

选择第一项,即在SQL Server里配置Application Services,然后点下一步。输入你机器上的SQL完整版的数据库引擎,选择你自己配的认证方式,并选择网站的数据库。

之后一直下一步到底,你会发现数据库里多了很多货。这些都是membership的表。还有存储过程什么的也给你建好了~

接下来的一步非常重要,就是配置正确的连接字符串。如果仅仅是对默认连接字符串修改数据库位置等信息,还是会报错说这个版本的SQL Server不支持OOXX什么的,要你用Express。

要使用SQL Server完整版,正确的连接字符串示例如下:

<connectionStrings>
  <add name="ApplicationServices"
       connectionString="data source=(local);Integrated Security=SSPI;Initial Catalog=HahaTest;"
       providerName="System.Data.SqlClient" />
</connectionStrings>

没错,这个就是最普通的连接字符串!我们再看看原先ASP.NET模板里自带的连接字符串:

<add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />

里面有两个参数,是SQL完整版不能用的:

AttachDBFilename和User Instance

所以诀窍其实在这里。只要把这两个参数去掉就好了~接下来你可以打开网站的配置工具看看能不能用了

点击 Security,发现没有任何错误了。SQL完整版上的Membership开荒成功!

测试了下注册和登录,也完全可以使用了!