Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
Ä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" />
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:
Ändern Sie den Authentifizierungsmodus in der Datei
Windows
"web.config" wie folgt:<authentication mode="Windows" />
Klicken Sie im Internet services Manager mit der rechten Maustaste auf die .aspx Datei oder den Webprojektordner, 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 Authentifizierungssteuerung" die Option "Bearbeiten" aus.
Deaktivieren Sie im Dialogfeld "Authentifizierungsmethoden " das Kontrollkästchen "Anonymer Zugriff ", und aktivieren Sie dann das Kontrollkästchen "Einfach", " Digest" oder " Integrierte (NT-Abfrage/Antwort) ".
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 None
Authentifizierungsmodus 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. IsAuthenticated
gibt 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
.