目前一直使用membership和roles,对它进行扩展后一切都很不错,但在部署上有点麻烦。经典的membership使用时得先用.net2.0带的aspnet_regsql.exe安装数据库对象,可以安装在mssql2000、sql2005上,但问题是在远程主机上是不能运行的,有个办法是本地先做好数据库,再传上去附加,还是很麻烦,也不好做成安装程序。
经典部署方式:
1、本地建立数据库
2、使用aspnet_regsql.exe建立membership所需数据库对象
3、建立自己的数据库业务逻辑
4、 保存为数据库文件,FTP到远程主机上附加
5、拷贝web应用程序部署
6、配置web.config
用附加的方式主要是为了基础数据,免得在远程主机上又是搞结构又是倒数据的麻烦。
但很多虚拟主机是不让附加数据库的,以上部署方法得把数据库对象导出为sql脚本来执行,aspnet_regsql.exe也是运行sql脚本的,在Microsoft.NET/Framework/v2.0.50727目录中有类似 InstallCommon.sql这样名字的8个sql脚本,用来建立相关结构,但是那些存储过程是需要配置参数的,相对更加麻烦(不然为什么会做个aspnet_regsql.exe应用程序来帮忙呢)。
Scott Guthrie有个办法,是使用VS2005的插件 SQL Server Hosting Toolkit将数据库导出为单一sql脚本,连基础数据都导的出来。这是个很先进的方法,可惜我家里的机器因为环境问题装不上,就没继续实验下去。 具体方法的中文版文章
绕了个大圈回来,还是用直接的方法:把现成的数据库对象全部导出,然后在远程主机上运行就得了。其实一开始就是用它的,但会报错,原因是aspnet_regsql生成的数据表也是有基础数据的,眼睛睁大看看原来是 aspnet_SchemaVersions表里有其他几个表的版本号。手工添加那些数据后就可以直接用了。(事实上是人工做了Scott Guthrie说的数据库导出)
最后把我导出的脚本提供出来,可以直接放在查询分析器里使用,也免得再用aspnet_regsql.exe来生成ASPNET数据库对象了。
点击下载此文件
PS:回头来看其实一开始我就该用最后的方法,也许是因为时间充裕,也许是因为想绕着弯子想这问题,故意把事情搞复杂了点。不过也学到了好多东西,多考虑一下软件部署对业务逻辑也是有帮助的。以前在书店看到本书,书名不记得,但上面有段话扭转了我的思考方式:
“软件开发应该从安装程序开始做起,很多程序团队一直到项目收尾时才开始设计安装程序,这是很严重的错误。对于软件使用者,安装程序是他对软件的第一印象,安装程序应该是软件项目的重点之一。”
经典部署方式:
1、本地建立数据库
2、使用aspnet_regsql.exe建立membership所需数据库对象
3、建立自己的数据库业务逻辑
4、 保存为数据库文件,FTP到远程主机上附加
5、拷贝web应用程序部署
6、配置web.config
用附加的方式主要是为了基础数据,免得在远程主机上又是搞结构又是倒数据的麻烦。
但很多虚拟主机是不让附加数据库的,以上部署方法得把数据库对象导出为sql脚本来执行,aspnet_regsql.exe也是运行sql脚本的,在Microsoft.NET/Framework/v2.0.50727目录中有类似 InstallCommon.sql这样名字的8个sql脚本,用来建立相关结构,但是那些存储过程是需要配置参数的,相对更加麻烦(不然为什么会做个aspnet_regsql.exe应用程序来帮忙呢)。
Scott Guthrie有个办法,是使用VS2005的插件 SQL Server Hosting Toolkit将数据库导出为单一sql脚本,连基础数据都导的出来。这是个很先进的方法,可惜我家里的机器因为环境问题装不上,就没继续实验下去。 具体方法的中文版文章
绕了个大圈回来,还是用直接的方法:把现成的数据库对象全部导出,然后在远程主机上运行就得了。其实一开始就是用它的,但会报错,原因是aspnet_regsql生成的数据表也是有基础数据的,眼睛睁大看看原来是 aspnet_SchemaVersions表里有其他几个表的版本号。手工添加那些数据后就可以直接用了。(事实上是人工做了Scott Guthrie说的数据库导出)
最后把我导出的脚本提供出来,可以直接放在查询分析器里使用,也免得再用aspnet_regsql.exe来生成ASPNET数据库对象了。

PS:回头来看其实一开始我就该用最后的方法,也许是因为时间充裕,也许是因为想绕着弯子想这问题,故意把事情搞复杂了点。不过也学到了好多东西,多考虑一下软件部署对业务逻辑也是有帮助的。以前在书店看到本书,书名不记得,但上面有段话扭转了我的思考方式:
“软件开发应该从安装程序开始做起,很多程序团队一直到项目收尾时才开始设计安装程序,这是很严重的错误。对于软件使用者,安装程序是他对软件的第一印象,安装程序应该是软件项目的重点之一。”