Как получить aspnet_Users.UserId для анонимного пользователя в членстве ASP.NET? - PullRequest
3 голосов
/ 25 октября 2009

Я пытаюсь получить поле членства в aspnet UserId от анонимного пользователя.

Я включил анонимную идентификацию в web.config:

<anonymousIdentification enabled="true" />

Я также создал профиль:

<profile>

  <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
         connectionStringName="ApplicationServices" 
         applicationName="/" />
  </providers>

  <properties>
    <add name="Email" type="System.String" allowAnonymous="true"/>
    <add name="SomethingElse" type="System.Int32" allowAnonymous="true"/>
  </properties>

</profile>

Я вижу данные в своей таблице aspnetdb\aspnet_Users для анонимных пользователей, для которых настроена информация профиля.

Userid                                  PropertyNames   PropertyValuesString     
36139818-4245-45dd-99cb-2a721d43f9c5    Email:S:0:17:   me@example.com

Мне просто нужно найти, как получить значение 'Userid'.

Невозможно использовать:

 Membership.Provider.GetUser(Request.AnonymousID, false); 

Request.AnonymousID - это другой GUID, который не равен 36139818-4245-45dd-99cb-2a721d43f9c5.

Есть ли способ получить этот ID пользователя? Я хочу связать это с неполной деятельностью для анонимного пользователя. Использование первичного ключа aspnet_Users предпочтительнее, чем создание собственного GUID (который я мог бы сделать и сохранить в профиле).

Это, по сути, обман этого вопроса , но на вопрос так и не был дан ответ.

Ответы [ 2 ]

4 голосов
/ 15 мая 2010

Вы можете получить идентификатор пользователя для анонимного пользователя с помощью:

string userId = Request.AnonymousID

2 голосов
/ 27 октября 2009

ОК, поэтому MemberShip.GetUser() возвращает объект типа MembershipUser.

Добавляя больше к таблицам в базе данных aspnetdb, кажется, что, хотя в aspnet_Users создается строка для всех пользователей (даже анонимных) - строка не создается в aspnet_Membership, если пользователь фактически не аутентифицирован / зарегистрирован.

Но анонимному профилю пользователя (таблица aspnet_Users) присваивается GUID вместо UserName.

Я до сих пор не нашел способа получить доступ к свойству UserId анонимного пользователя - но я понял, что действительно имя пользователя является более полезным ключом в любом случае.

Поле UserId присутствует и в таблице aspnet_Users, поэтому, если вам действительно нужно уникальное поле UserId, вы можете получить его с помощью «ручного» поиска SQL.

...