最近在看PetShop4.0,看过该项目的朋友应该都知道在petshop中有个模块叫Membership,从个项目层次关系上面来看,如果你的数据库采用SqlServer,该Membership模块基本没有用处。因为该模块提供的是为Oracle数据源提供的自定义Provider。
由于本人自2006年以来对ASP.NET研究日渐减少,并不熟悉.net中的一些新类型和新机制,而这个Membership也是困扰了我好久,为了彻底弄懂Membership我查看了好多的资料直到现在终于大概弄懂了其工作原理,但是有些细节仍然没有得以解决。
关于Membership的介绍不用我多说,官方的资料不少各位很方便就能查阅得到(推荐一位老兄的连载:关于membership1-4)。我只是准备在此提到一个困扰了我很久才得以解开的问题,希望各位若有类似情况不要花费太久时间。
我在做membership的联系之前并没有配置aspnetdb这个数据库,也没有在machine.config或web.config中对于membership节点多加配置,照理来说membership默认的存储方式在./SQLEXPRESS的aspnetdb数据库中,但是我的电脑中并没有该数据库也没有配置config文件,因为没有存储数据的地方,可是奇怪的是我拖放了一个createuserwizard控件并浏览居然成功创建了用户,可是该用户存储到哪里去了呢?于是我使用向导安装了aspnetdb但是没有配置config文件,再次创建一个用户成功,可是该用户信息并没有存在aspnetdb数据库中的users表中。那数据到哪里去了呢?经过好长时间的折腾,偶尔发现在网站目录下有一个App_Data目录里面居然躺着一个ASPNETDB.MDF文件,于是我使用数据库打开该文件,终于发现我之前创建的所有用户信息均在里面,原来是这样的如果本地没有存储数据库也没有在配置文件中制定membership存放位置,那么asp.net会自动创建ASPNETDB.MDF文件用来存放membership用户信息。
参考资料:
http://blog.sina.com.cn/s/blog_4c902390010098f8.html
http://blog.sina.com.cn/yingliliang
http://www.cnblogs.com/kentyshang/archive/2006/06/08/420642.html