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 None
verwenden, 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:
Ä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" />
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:
Ändern Sie den Authentifizierungsmodus in der web.config-Datei
Windows
wie folgt in:<authentication mode="Windows" />
Klicken Sie im Internetdienste-Manager mit der rechten Maustaste auf die .aspx Datei oder den Ordner Webprojekt , und wählen Sie dann Eigenschaften aus.
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.
Wählen Sie unter Anonymer Zugriff und Authentifizierungssteuerungdie Option Bearbeiten aus.
Deaktivieren Sie im Dialogfeld Authentifizierungsmethoden das Kontrollkästchen Anonymer Zugriff, und aktivieren Sie dann das Kontrollkästchen Basic, Digest oder Integrated (NT Challenge/Response).
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 None
verwenden, 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 Basic
verwenden.
References
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für