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.

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

Symptome

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, weil die Authentifizierungsvariablen in der ServerVariables Sammlung nicht aufgefüllt werden, wenn Sie die Sicherheit für den anonymen Zugriff verwenden, um auf die seite .aspx zuzugreifen. Dieses Problem kann auch auftreten, wenn Sie dem anonymen Benutzer Zugriff im <authorization> Abschnitt der web.config-Datei gewähren.

Lösung

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

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

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

    <authentication mode="Windows" />
    
  2. Klicken Sie im Internetdienste-Manager mit der rechten Maustaste auf die .aspx Datei oder den Ordner Webprojekt , 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 Authentifizierungssteuerungdie Option Bearbeiten aus.

  5. Deaktivieren Sie im Dialogfeld Authentifizierungsmethoden das Kontrollkästchen Anonymer Zugriff, und aktivieren Sie dann das Kontrollkästchen Basic, Digest oder Integrated (NT Challenge/Response).

  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 führt das Ändern der Authentifizierungsmodi in IIS möglicherweise nicht immer zu den gewünschten Ergebnissen. 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 <authorization> Abschnitt Zugriff gewähren, während Sie einen anderen Authentifizierungsmodus als Noneverwenden, geben auch andere Servervariablen wie AUTH_USER und REMOTE_USER (sowie die HttpContext.Current.User.Identity.Name -Eigenschaft) 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 den 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 Forms, Passport, Integrated (NT Challenge/Response)oder Basicverwenden.

References