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

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

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

Problembeschreibung

Wenn Sie versuchen, in ASP.NET auf die Request.ServerVariables("LOGON_USER") Variable 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, weil die Authentifizierungsbezogenen Variablen in der ServerVariables Auflistung nicht aufgefüllt werden, wenn Sie die Sicherheit des anonymen Zugriffs verwenden, um auf die ASPX-Seite zuzugreifen. Dieses Problem kann auch auftreten, wenn Sie dem anonymen Benutzer im Abschnitt der dateiweb.configZugriff <authorization> gewähren.

Lösung

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

  1. Ändern Sie den Authentifizierungsmodus in der web.config-Datei auf einen anderen Wert als None . Mit dem folgenden Eintrag in der dateiweb.config wird beispielsweise der Authentifizierungsmodus auf die formularbasierte Authentifizierung festgelegt:

    <authentication mode="Forms" />
    
  2. Verwenden Sie die folgende Syntax, um den Zugriff auf den anonymen Benutzer in der dateiweb.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 dateiweb.config Windows wie folgt:

    <authentication mode="Windows" />
    
  2. Klicken Sie im Internet Services Manager mit der rechten Maustaste auf die ASPX-Datei oder den Web-Project-Ordner, und wählen Sie dann Eigenschaften aus.

  3. Wenn Sie "Eigenschaften" für den Ordner "Web Project" 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 Authentifizierung" 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 liefert das Ändern der Authentifizierungsmodi in IIS allein möglicherweise nicht immer die gewünschten Ergebnisse. Daher müssen Sie auch die Sicherheitseinstellungen in den .config-Dateien berücksichtigen.

Hinweis

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

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

References