Come ottenere aspnet_Users.UserId per un utente anonimo nell'iscrizione ASP.NET?
-
06-07-2019 - |
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.
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".