Как получить aspnet_Users.UserId для анонимного пользователя в членстве в ASP.NET?

Я пытаюсь получить поле членства 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:   [email protected]

Мне просто нужно найти, как получить значение «Идентификатор пользователя».

Нельзя использовать:

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

Request.AnonymousID - это другой GUID, отличный от 36139818-4245-45dd-99cb-2a721d43f9c5.

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

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


person Simon_Weaver    schedule 25.10.2009    source источник


Ответы (2)


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

строка userId = Request.AnonymousID

person GDB    schedule 15.05.2010

Итак, MemberShip.GetUser() возвращает объект типа MembershipUser.

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

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

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

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

person Simon_Weaver    schedule 27.10.2009