有关书籍说:
Profile 对象与Session对象十分相似,但是更好用一些。与Session相似的地方在于,Profile是相对于一个特定的用户的,也就是说,每个Web应用程序的用户都有他们自己的profile对象。与Session不同的是,Profile对象是持久对象。如果你向Session中添加一个项,在你离开网站时,该项就会消失。而Profile则完全不同,当你修改Profile的状态时,修改在多个访问之间均有效。我想知道,为什么匿名用户关闭了浏览器,再打开还能取到自己的profile的值,服务器是把匿名用户的个人标识放在个人的cookie里了吗?但是我发现我清空了cookie,再打开浏览器还是能取到自己的profile的值,很奇怪

解决方案 »

  1.   

    如果你关闭的浏览器,并在一周之后调用该页面,很多东西仍然会保留原值。从这一点可以看出Profile为每个用户自动保存一个副本。请问这个副本是依什么的形式存储在客户端的?
    我清了cookie这个副本好像还存在。
      

  2.   

    <providers>
              <add name="MyProfile" type="System.Web.Profile.SqlProfileProvider" connectionStringName="MisData" />
    </providers>它能放到 数据库表去的哦。
      

  3.   

     我把本地的COOKIE清了,怎么访问服务器还能知道是我访问的并把数据库读出来显示出来?我一直是匿名的
      

  4.   

    匿名用户使用Profile,第一次会在ASPNETDB数据库的表aspnet_Users生产一条记录,产生一个唯一标识你这台电脑的UserId和UserName,
    还有定义Profile的属性时,要指名让他的allowAnonymous="true"
     下面是我的一个购物车Profile.Cart,供你学习      <properties>
            <group name="Cart">
              <add name="ProId" type="System.Collections.ArrayList" allowAnonymous="true" />
              <add name="ProName" type="System.Collections.ArrayList" allowAnonymous="true" />
              <add name="Qty" type="System.Collections.ArrayList" allowAnonymous="true" />
              <add name="ListPrice" type="System.Collections.ArrayList" allowAnonymous="true" />
              <add name="TotalPrice" allowAnonymous="true" />
            </group>
          </properties>如果你对匿名用户的购物车信息迁移到登录用户这些感兴趣,可以联系我,QQ:442962355
      

  5.   

    补充:清楚Cookie后,重新访问,会生成一个新的纪录在表里,关于匿名验证Provider:
     <anonymousIdentification enabled="true"
     cookieName=".DBANON"
     cookieTimeout="43200"
     cookiePath="/" cookieRequireSSL="false"
     cookieSlidingExpiration="true"
     cookieProtection="All"
     cookieless="UseCookies"/>匿名验证Provider在浏览器中创建一个Cookie并在匿名用户最后一次访问之后的43200Min(大约29天)之内识别他,以此重置计时器。如果一个月之内没访问,就会失效,形同手动清除Cookie。
    唯一的解决方案是使用登录名和密码注册。