Domanda

Sto cercando di ottenere il campo UserId di appartenenza aspnet da un utente anonimo.

Ho abilitato l'identificazione anonima in web.config:

<anonymousIdentification enabled="true" />

Ho anche creato un profilo:

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

Vedo i dati nella mia tabella aspnetdb \ aspnet_Users per utenti anonimi che hanno impostato le informazioni del profilo.

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

Devo solo trovare come ottenere il valore "Userid".

Non è possibile utilizzare:

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

Request.AnonymousID è un GUID diverso e non è uguale a 36139818-4245-45dd-99cb-2a721d43f9c5.

Esiste un modo per ottenere questo Userid. Voglio associarlo ad attività incomplete per un utente anonimo. Utilizzare la chiave primaria di aspnet_Users è preferibile dover creare il mio GUID (cosa che potrei fare e archiviare nel profilo).

Questo è fondamentalmente un duplicato di questa domanda ma alla domanda non è mai stata effettivamente data risposta.

È stato utile?

Soluzione

È possibile ottenere UserId per un utente anonimo con questo:

stringa userId = Request.AnonymousID

Altri suggerimenti

OK, quindi MemberShip.GetUser () restituisce un oggetto di tipo MembershipUser .

Analizzando di più nelle tabelle nel database aspnetdb sembra che sebbene una riga sia creata in aspnet_Users per tutti gli utenti (anche quelli anonimi) - NON viene creata una riga in aspnet_Membership a meno che l'utente non sia effettivamente autenticato / registrato.

Ma a un profilo utente anonimo (tabella aspnet_Users) viene assegnato un GUID anziché un UserName .

Non ho ancora trovato un modo per accedere alla proprietà UserId di un utente anonimo - ma mi sono reso conto che il nome utente è comunque la chiave più utile.

Il campo UserId è presente anche nella tabella aspnet_Users , quindi se hai davvero bisogno del campo UserId univoco, puoi ottenerlo con una ricerca SQL "manuale".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top