Request.ServerVariables("LOGON_USER") restituisce una stringa vuota in ASP.NET
Questo articolo fornisce soluzioni per il problema in cui la Request.ServerVariables("LOGON_USER")
variabile restituisce una stringa vuota in ASP.NET.
Versione originale del prodotto: ASP.NET
Numero KB originale: 306359
Sintomi
Se si tenta di accedere alla Request.ServerVariables("LOGON_USER")
variabile in ASP.NET, viene restituita una stringa vuota.
Se si usa Microsoft Visual C# .NET, la sintassi seguente accede a questa variabile:
Request.ServerVariables["LOGON_USER"]
Causa
Questo problema si verifica perché le variabili correlate all'autenticazione nella ServerVariables
raccolta non vengono popolate se si usa la sicurezza di accesso anonimo per accedere alla pagina .aspx. Questo problema può verificarsi anche se si concede all'utente anonimo l'accesso nella <authorization>
sezione del file web.config .
Risoluzione
Per popolare la LOGON_USER
variabile quando si usa una modalità di autenticazione diversa da None
, è possibile negare l'accesso all'utente anonimo nella <authorization>
sezione del file web.config . Per negare l'accesso all'utente anonimo nella <authorization>
sezione , seguire questa procedura:
Modificare la modalità di autenticazione nel file web.config in un valore diverso da
None
. Ad esempio, la voce seguente nel file web.config imposta la modalità di autenticazione su Autenticazione basata su form:<authentication mode="Forms" />
Per negare l'accesso all'utente anonimo nel file web.config , usare la sintassi seguente:
<authorization> <deny users = "?" /> <!-- This denies access to the anonymous user --> <allow users ="*" /> <!-- This allows access to all users --> </authorization>
Se si usa autenticazione di Windows, è anche possibile seguire questa procedura per risolvere il problema:
Modificare la modalità di autenticazione nel file web.config in come indicato di
Windows
seguito:<authentication mode="Windows" />
In Gestione servizi Internet fare clic con il pulsante destro del mouse sul file .aspx o sulla cartella Progetto Web e quindi scegliere Proprietà.
Se si seleziona Proprietà per la cartella Progetto Web , selezionare la scheda Sicurezza directory . Se si seleziona Proprietà per il file .aspx, selezionare la scheda Sicurezza file .
In Accesso anonimo e controllo di autenticazione selezionare Modifica.
Nella finestra di dialogo Metodi di autenticazione deselezionare la casella di controllo Accesso anonimo e quindi selezionare la casella di controllo Basic, Digest o Integrated (NT Challenge/Response).
Selezionare OK per chiudere entrambe le finestre di dialogo.
Stato
Si tratta di un comportamento legato alla progettazione del prodotto.
Ulteriori informazioni
ASP.NET offre nuove modalità di autenticazione e schemi di autorizzazione, che è possibile configurare nei file .config. Per questo motivo, la modifica delle modalità di autenticazione in IIS da sola potrebbe non produrre sempre i risultati desiderati. Pertanto, è necessario considerare anche le impostazioni di sicurezza nei file .config.
Nota
Quando si abilita l'autenticazione anonima in combinazione con autenticazione di Windows o se si concede l'accesso all'utente anonimo nella <authorization>
sezione mentre si usa una modalità di autenticazione diversa da None
, anche altre variabili del server, ad AUTH_USER
esempio e REMOTE_USER
(nonché la HttpContext.Current.User.Identity.Name
proprietà ), restituiscono una stringa vuota. Per popolare queste variabili, è possibile usare una qualsiasi delle risoluzioni indicate in precedenza.
In ASP.NET è anche possibile utilizzare la IsAuthenticated
proprietà dell'oggetto Request
per determinare se viene utilizzata la sicurezza di accesso anonimo. IsAuthenticated
restituisce false se l'accesso anonimo è attivato e restituisce true se si utilizza qualsiasi altro mezzo di autenticazione, ad Forms
esempio , Passport
, Integrated (NT Challenge/Response)
o Basic
.
Riferimenti
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per