Profile_MigrateAnonymous 执行次数

by Alpha 1. November 2008 20:14

按照我的理解,应该是当用户由匿名用户转变为注册用户的时候,执行一次,当身份是注册用户的时候,是不需要执行这个的。可是根据我的程序来看,并不是这样的!

 

匿名用户的时候是不会执行,可是当转变为注册用户的时候,每进行一次请求,都会调用一次,实在是不理解,难道是我哪里配置错误了么?

 

void Profile_MigrateAnonymous(Object s, ProfileMigrateEventArgs e)
    {
        ProfileCommon anonProfile =
          Profile.GetProfile(e.AnonymousID);
        Profile.LastVisit = DateTime.Now.ToString();

    }

 

==========更新==========

发现问题所在了,参考了PetShop的代码,发现他里面是这样写的:

//   Clean   up   anonymous   profile  
ProfileManager.DeleteProfile(e.AnonymousID);  
AnonymousIdentificationModule.ClearAnonymousIdentifier();  
//   Save   profile  
Profile.Save(); 

 

看过之后恍然大悟,原来我的匿名用户的信息一直保留,系统会认为一直有匿名用户需要转换成注册用户,所以每次访问都执行迁移的代码,把匿名用户的信息删除掉之后得到了完美解决。

 

=========更新2============

用上面的代码之后,发现表aspnet_Users里面会保留曾经使用过的匿名用户,感觉这样不好,下面的代码可以解决。

Membership.DeleteUser(e.AnonymousID, true);

参数
username
类型:System.String

要删除的用户的名称。

deleteAllRelatedData
类型:System.Boolean

如果为 true,则从数据库中删除与该用户相关的数据;如果为 false,则将与该用户相关的数据保留在数据库。

返回值
类型:System.Boolean

如果用户已删除,则为 true;否则为 false。

 

//使用下面的语句可删除当前匿名用户的Profile信息
//ProfileManager.DeleteProfile(e.AnonymousID);
//使用下面的语句可删除当前匿名用户,并且删除匿名用户的Profile信息
//Membership.DeleteUser(e.AnonymousID, true);
//使用下面的语句可删除匿名用户的cookie
//AnonymousIdentificationModule.ClearAnonymousIdentifier();

Tags: Views:1161

.Net相关

Comments

11/2/2008 10:27:15 AM #

benben

呵呵,最近把blog迁移到了GAE,同时用了www.119797.com域名,麻烦更新下咯。

benben |

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen  浙ICP备09023819号  

关于作者

Alpha

1.男
2.已婚
3.网虫
4.宝宝叫yoyo

Calendar

<<  July 2010  >>
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

View posts in large calendar

RecentComments

Comment RSS