是否可以在不更新LastActivityDate的情况下访问配置文件?

时间:2010-08-09 07:48:20

标签: asp.net asp.net-mvc asp.net-membership asp.net-profiles

在asp.net中(使用MVC,但这也经常发生)

Profile.GetProfile(username);

将更新该用户的LastActivityDate。当其他人正在查看该用户的个人资料时,无意这样做。

在成员资格类中,您可以指定是否使用第二个参数更新此日期,如下所示:

Membership.GetUser(username, false); // doesn't update LastActivityDate
Membership.GetUser(username, true); // updates LastActivityDate

在没有编写自己的提供程序的情况下,是否在Profile配置文件中执行类似操作?

2 个答案:

答案 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

否则,只需直接查询数据库