利用Profile做支持匿名用户到登录用户转移购物车

http://hi.baidu.com/cyisi/blog/item/03dd5bf3f045c82d730eec4d.html

第一步:确定商品数据库表。

第二步:配置Profile支持C:\Windows\Microsoft.NET\Framework\v2.0.5.0727\aspnet_regsql.exe

aspnet_regsql -exportsqlonly <filename>

这样子导出到一个文本文件,这里包含了建立Membership相关的表/存储过程/视图等的所有脚本。


aspnet_regsql -sqlexportonly c:\abc.txt -A all

http://topic.csdn.net/u/20091228/11/c270ad36-6069-4ca0-b8ec-2727374aacfb.html

 

第三步:创建商品列表实体类

第四步:建一个购物车实现类。这个类必须支持序列化(二进制)。利用哈希表来存储购物项。里面包含增加删除商品和统计方法。哈希表实例的Values方法可以获取购物车所有项。

第五步:用GridView绑定商品列表。

第六步:配置文件设置Profile.

                <profile enabled="true" defaultProvider="SqlProvider">

        <providers>

          <add name="SqlProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="TestProfileConnectionString"/>

        </providers>

        <properties>

         <!--type类名,允许匿名,二进制序列化,类映射-->

          <add name="ShoppingCart" type="ShoppingCart" allowAnonymous="true" serializeAs="Binary"/>

        </properties>

      </profile>

第七步:在GrivdView添加按钮事件Profile.ShoppingCart.AddItem(id,name,price);

第八步:在购物车页面用GridView控件(有删除按钮)。数据源为哈希表实例的Values方法可以获取购物车所有项。

匿名迁移:

      登录页面:登录事件

if (this.TextBox1.Text.Trim() == "chen" && this.TextBox2.Text.Trim() == "yisi")

        {

                            //forms验证身份票据,这样就是合法用户。当匿名使用应用程序的用户登录时,可以使用 MigrateAnonymous 事件将配置文件属性值从匿名配置文件中复制到已验证身份的配置文件中。

            FormsAuthentication.SetAuthCookie(this.TextBox1.Text.Trim(), false);

            Response.Redirect("../ShoppingCarted.aspx");

        }

MigrateAnonymous事件存在Global.asax当中//用户进行登录时会进行触发

protected void Profile_MigrateAnonymous(object s, ProfileMigrateEventArgs e)

    {

        ProfileCommon anonProfile = Profile.GetProfile(e.AnonymousID);

        foreach (CartItem ci in anonProfile.ShoppingCart.CartItems)

        {

            Profile.ShoppingCart.AddCartItem(ci);//这样应该是重新实例化了

        }

//注释:

profile基于cookie为基础来维持没有GUID,如果Cookie还在(基于Form验证),如果COOKIE不存在或者过期,GUID会重新生成,所以之前的记录是不存在的。如果在cookie有数据的情况下,进行登录,登录成功会把数据迁移到到登录用户,其实就是更新用户表中的用户名为(登录的用户名非GUID了)。

 

出错修改“

解决办法是网上找到的:执行C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_regsql.exe(Framework下的版本目录可能稍有出入),按照窗口提示一路点击下一步到如下图所示窗口,在窗口下方的数据库下拉框中选择待配置的数据库进行配置,点击下一步,完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值