Pregunta

Estoy intentando obtener el campo UserId de pertenencia a aspnet de un usuario anónimo.

He habilitado la identificación anónima en web.config:

<anonymousIdentification enabled="true" />

También he creado un perfil:

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

Veo datos en mi tabla aspnetdb \ aspnet_Users para usuarios anónimos que han establecido información de perfil.

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

Solo necesito encontrar la forma de obtener el valor 'Userid'.

No es posible utilizar:

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

El Request.AnonymousID es un GUID diferente y no es igual a 36139818-4245-45dd-99cb-2a721d43f9c5.

¿Hay alguna manera de obtener este Userid. Quiero asociarlo con una actividad incompleta para un usuario anónimo. Usar la clave principal de aspnet_Users es preferible a tener que crear mi propio GUID (que podría hacer y almacenar en el perfil).

Esto es básicamente una dupe de esta pregunta pero la pregunta nunca fue respondida realmente.

¿Fue útil?

Solución

Puede obtener el UserId para un usuario anónimo con esto:

string userId = Request.AnonymousID

Otros consejos

OK, entonces MemberShip.GetUser () devuelve un objeto de tipo MembershipUser .

Al profundizar en las tablas en la base de datos aspnetdb , parece que aunque se crea una fila en aspnet_Users para todos los usuarios (incluso los anónimos), NO se crea una fila. en aspnet_Membership a menos que el usuario esté realmente autenticado / registrado.

Pero, un perfil de usuario anónimo (tabla aspnet_Users) recibe un GUID en lugar de un UserName .

Todavía no he encontrado la forma de acceder a la propiedad UserId de un usuario anónimo, pero me he dado cuenta de que, de todos modos, el nombre de usuario es la clave más útil.

El campo UserId también está presente en la tabla aspnet_Users , por lo que si realmente necesita el campo UserId exclusivo, puede obtenerlo con una búsqueda de SQL 'manual'.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top