在asp.net中(使用MVC,但这也经常发生)
Profile.GetProfile(username);
将更新该用户的LastActivityDate。当其他人正在查看该用户的个人资料时,无意这样做。
在成员资格类中,您可以指定是否使用第二个参数更新此日期,如下所示:
Membership.GetUser(username, false); // doesn't update LastActivityDate
Membership.GetUser(username, true); // updates LastActivityDate
在没有编写自己的提供程序的情况下,是否在Profile配置文件中执行类似操作?
答案 0 :(得分:9)
您可能会使用一个丑陋的解决方法,其中包括更改aspnet_Profile_GetProperties
存储过程。这个负责在访问用户配置文件时获取属性。
打开此程序,您将在底部找到以下代码:
IF (@@ROWCOUNT > 0)
BEGIN
UPDATE dbo.aspnet_Users
SET LastActivityDate=@CurrentTimeUtc
WHERE UserId = @UserId
END
删除它以停止更新LastActivityDate
。致电LastActivityDate
时,您仍会获得Membership.GetUser(username, true);
更新。
答案 1 :(得分:1)
您可能会考虑使用其他人编写的提供程序,而不是自己编写。
Scott Guthrie博客上的这个包含存储过程,可以通过您自己的代码直接调用以获取信息:
http://weblogs.asp.net/scottgu/archive/2006/01/10/435038.aspx
此页面有一个msi下载,它安装了一个示例应用程序,用于处理自定义配置文件数据。基于表的配置文件比默认配置文件执行得更好,其中所有配置文件数据都包含在单个数据库字段中。基于表格的表格也更容易直接查询,这将帮助您解决问题。示例模式中的存储过程称为 getCustomProfileData
否则,只需直接查询数据库。