Freigeben über


Request.ServerVariables("LOGON_USER") gibt leere Zeichenfolge in ASP.NET

Dieser Artikel enthält Lösungen für das Problem, bei dem die Request.ServerVariables("LOGON_USER") Variable in ASP.NET eine leere Zeichenfolge zurückgibt.

Ursprüngliche Produktversion: ASP.NET
Ursprüngliche KB-Nummer: 306359

Problembeschreibung

Wenn Sie versuchen, auf die Request.ServerVariables("LOGON_USER") Variable in ASP.NET zuzugreifen, wird eine leere Zeichenfolge zurückgegeben.

Wenn Sie Microsoft Visual C# .NET verwenden, greift die folgende Syntax auf diese Variable zu:

Request.ServerVariables["LOGON_USER"]

Ursache

Dieses Problem tritt auf, da die authentifizierungsbezogenen Variablen in der ServerVariables Auflistung nicht aufgefüllt werden, wenn Sie die Sicherheit für anonymen Zugriff verwenden, um auf die .aspx Seite zuzugreifen. Dieses Problem kann auch auftreten, wenn Sie dem anonymen Benutzer Zugriff im <authorization> Abschnitt der Datei "web.config " gewähren.

Lösung

Wenn Sie die LOGON_USER Variable auffüllen möchten, wenn Sie einen anderen Authentifizierungsmodus verwenden als None, können Sie den Zugriff auf den anonymen Benutzer im <authorization> Abschnitt der Datei "web.config " verweigern. Führen Sie die folgenden Schritte aus, um den Zugriff auf den anonymen Benutzer im <authorization> Abschnitt zu verweigern:

  1. Ändern Sie den Authentifizierungsmodus in der Datei "web.config " in einen anderen Als None. Der folgende Eintrag in der Datei "web.config " legt beispielsweise den Authentifizierungsmodus auf formularbasierte Authentifizierung fest:

    <authentication mode="Forms" />
    
  2. Verwenden Sie die folgende Syntax, um den Zugriff auf den anonymen Benutzer in der Datei "web.config " zu verweigern:

    <authorization>
        <deny users = "?" /> <!-- This denies access to the anonymous user -->
        <allow users ="*" /> <!-- This allows access to all users -->
    </authorization>
    

Wenn Sie Windows-Authentifizierung verwenden, können Sie auch die folgenden Schritte ausführen, um dieses Problem zu beheben:

  1. Ändern Sie den Authentifizierungsmodus in der Datei Windows "web.config" wie folgt:

    <authentication mode="Windows" />
    
  2. Klicken Sie im Internet services Manager mit der rechten Maustaste auf die .aspx Datei oder den Webprojektordner, und wählen Sie dann "Eigenschaften" aus.

  3. Wenn Sie "Eigenschaften" für den Ordner "Webprojekt" auswählen, wählen Sie die Registerkarte "Verzeichnissicherheit" aus. Wenn Sie "Eigenschaften" für die .aspx Datei auswählen, wählen Sie die Registerkarte "Dateisicherheit" aus.

  4. Wählen Sie unter "Anonymer Zugriff und Authentifizierungssteuerung" die Option "Bearbeiten" aus.

  5. Deaktivieren Sie im Dialogfeld "Authentifizierungsmethoden " das Kontrollkästchen "Anonymer Zugriff ", und aktivieren Sie dann das Kontrollkästchen "Einfach", " Digest" oder " Integrierte (NT-Abfrage/Antwort) ".

  6. Wählen Sie 'OK ' aus, um beide Dialogfelder zu schließen.

Status

Es handelt sich hierbei um ein beabsichtigtes Verhalten.

Weitere Informationen

ASP.NET bietet neue Authentifizierungsmodi und Autorisierungsschemas, die Sie in den CONFIG-Dateien konfigurieren können. Aus diesem Grund kann das Ändern der Authentifizierungsmodi in IIS allein nicht immer zu den gewünschten Ergebnissen führen. Daher müssen Sie auch die Sicherheitseinstellungen in den CONFIG-Dateien berücksichtigen.

Notiz

Wenn Sie die anonyme Authentifizierung in Verbindung mit Windows-Authentifizierung aktivieren oder wenn Sie während der Verwendung eines anderen NoneAuthentifizierungsmodus als andere Servervariablen wie AUTH_USER und REMOTE_USER (sowie die HttpContext.Current.User.Identity.Name Eigenschaft) zugriff auf den anonymen Benutzer im <authorization> Abschnitt gewähren, geben Sie auch eine leere Zeichenfolge zurück. Sie können die oben genannten Auflösungen verwenden, um diese Variablen aufzufüllen.

In ASP.NET können Sie auch die IsAuthenticated Eigenschaft des Request Objekts verwenden, um zu bestimmen, ob die Sicherheit für anonymen Zugriff verwendet wird. IsAuthenticatedgibt false zurück, wenn anonymer Zugriff aktiviert ist und true zurückgibt, wenn Sie andere Authentifizierungsmittel wie Forms, , Passport, Integrated (NT Challenge/Response)oder Basic.

References