12

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

Profile.GetProfile(username);

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

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

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

无论如何,在不编写我自己的提供程序的情况下,是否可以在配置文件提供程序中做类似的事情?

4

2 回答 2

10

您可能会使用一种丑陋的解决方法,其中包括更改aspnet_Profile_GetProperties存储过程。这个负责在访问用户配置文件时获取属性。

打开此过程,您将在底部找到以下代码:

IF (@@ROWCOUNT > 0)
BEGIN
    UPDATE dbo.aspnet_Users
    SET    LastActivityDate=@CurrentTimeUtc
    WHERE  UserId = @UserId
END

删除它以停止更新LastActivityDate. LastActivityDate调用时您仍会得到更新Membership.GetUser(username, true);

于 2011-08-08T13:24:53.150 回答
1

您可能会考虑使用其他人编写的提供程序,而不是自己编写。

Scott Guthrie 博客上的这个包含存储过程,可以由您自己的代码直接调用以获取信息:

http://weblogs.asp.net/scottgu/archive/2006/01/10/435038.aspx

此页面有一个 msi 下载,它安装了一个用于处理自定义配置文件数据的示例应用程序。基于表的配置文件比默认配置文件的性能要好得多,默认配置文件的所有配置文件数据都包含在单个数据库字段中。基于表格的表格也更容易直接查询,这将帮助您解决问题。示例架构中的存储过程称为getCustomProfileData

否则,直接查询数据库即可

于 2010-08-09T07:57:07.537 回答