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