2010-08-09 2 views
11

В asp.net (с использованием MVC, но это происходит в регулярном тоже)Возможно ли получить доступ к профилю без обновления LastActivityDate?

Profile.GetProfile(username); 

обновит LastActivityDate для этого пользователя. Это не предназначено, когда кто-то еще просматривает профиль этого пользователя.

В классе членства вы можете указать, нужно ли обновлять эту дату со вторыми парами, например, так:

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

есть в любом случае, чтобы сделать что-то подобное в поставщике профили без написания моего собственного поставщика?

ответ

9

Возможно, вы используете одно уродливое обходное решение, которое включает в себя изменение хранимой процедуры aspnet_Profile_GetProperties. Этот объект отвечает за получение свойств при доступе к профилю пользователя.

Открыть эту процедуру, и вы увидите следующий код в нижней части:

IF (@@ROWCOUNT > 0) 
BEGIN 
    UPDATE dbo.aspnet_Users 
    SET [email protected] 
    WHERE UserId = @UserId 
END 

Удалите его, чтобы остановить обновление LastActivityDate. Вы по-прежнему будете получать LastActivityDate при звонке Membership.GetUser(username, true);.

+3

Да, редактирование sproc - это то, что я закончил делать. В какой-то момент я, вероятно, переписал часть профиля моего сайта на что-то обычай или использовал третью сторону, но мне нужно быстрое исправление. – WildJoe

1

Вы можете посмотреть на использование провайдера, который написал кто-то другой, а не написать свой собственный.

Это один на блоге Скотт Гатри включает хранимые процедуры, которые могут быть вызваны непосредственно вашим собственным кодом, чтобы получить информацию:

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

Эта страница имеет загрузить MSI, устанавливающее образец приложения для работы с пользовательские данные профиля. Профиль на основе таблицы работает намного лучше, чем значение по умолчанию, где все данные профиля содержатся в одном поле базы данных. На основе таблицы также намного проще запросить напрямую, что поможет вам с вашим вопросом. Хранимая процедура из схемы выборки называется getCustomProfileData

В противном случае, просто запрос базы данных непосредственно.

+1

Я настоятельно рекомендую напрямую обращаться к базе данных. В противном случае, отличный пост. – bzlm

+0

@bzlm Я уважаю ваши строковые представления, и я не могу не согласиться, если вы не дадите мне повода. :) Я уже несколько лет запрашиваю базы данных, чем мне нравится, и у меня было слишком много трудностей. –

Смежные вопросы