petshop中允许匿名用户使用购物车
并分配一个类似096aee06-e392-4890-80e5-4683324a6f82这样的用户名
但我看了一天的代码没找到他是如何处理的
更不理解的就是当下次进入petshop,匿名用户的购物车还可以使用
这样更不知道他是如何获取原来096aee06-e392-4890-80e5-4683324a6f82这个用户名的
直到注册了该临时的用户名才消失.~文章看了不少但,还是不明白当中的精髓恳请大家来指教指教!

解决方案 »

  1.   

    Guid userid = Guid.NewGuid();
      

  2.   

    096aee06-e392-4890-80e5-4683324a6f82
    是Guid
    当用户进入系统之后,系统会分配给用户一个Guid,以后匿名用户就用这个来标记
    匿名用户退出的时候,可能需要定时查询在线用户,删除多长时间没有活动的匿名用户
      

  3.   

    petshop 4.0中找不到Guid
      

  4.   

    不知道是从那里调用
    public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection)
    去获取用户信息的
    每一个项目都看过了,就是找不到调用他的地方!
      

  5.   

    ProfileCommon : System.Web.Profile.ProfileBase 
    里有调用,至于096aee06-e392-4890-80e5-4683324a6f82这样的用户名
    就不清楚在那获得的了
      

  6.   

    页面一加载就会有一个Profile.UserName的值.我发现就是匿名用户的用户名,但他是从那里来的?!
      

  7.   

    profile是2.0新出来的东西,ProfileCommon这个类是配好profile自动生成的,要查查profile启动匿名之后的处理机制,才知道Profile.UserName怎么回事
      

  8.   

    Profile对象既可用于匿名用户也可以用于已认证用户。然而,当用户从匿名用户状态转换为已认证用户状态时,Profile对象能够以一种令人难以理解的方式完成任务。
    当匿名用户使用Profile对象时,用户profile是与一个随机生成的号码相关联的,该号码是根据每个用户唯一生成的,它保存在浏览器的cookie中,无论何时该用户返回应用程序,该用户的Profile设置会被自动加载。
    如果匿名用户通过认证的话,所有与该用户相关的profile就会丢失,同时系统会生成一个新的profile。这时该Profile信息将与用户名相关联,而非唯一识别号。
      

  9.   

    这是petshop中将匿名的信息转为注册用户信息的代码:
        void Profile_MigrateAnonymous(Object sender, ProfileMigrateEventArgs e) {
            ProfileCommon anonProfile = Profile.GetProfile(e.AnonymousID);        // Merge anonymous shopping cart items to the authenticated shopping cart items
            foreach (CartItemInfo cartItem in anonProfile.ShoppingCart.CartItems)
                Profile.ShoppingCart.Add(cartItem);        // Merge anonymous wishlist items to the authenticated wishlist items
            foreach (CartItemInfo cartItem in anonProfile.WishList.CartItems)
                Profile.WishList.Add(cartItem);        // Clean up anonymous profile
            ProfileManager.DeleteProfile(e.AnonymousID);
            AnonymousIdentificationModule.ClearAnonymousIdentifier();
            
            // Save profile
            Profile.Save();
        }