Request.ServerVariables("LOGON_USER") ASP.NET içinde boş dize döndürür
Bu makalede, değişkenin ASP.NET'de boş dize döndürme sorununa Request.ServerVariables("LOGON_USER")
yönelik çözümler sağlanır.
Orijinal ürün sürümü: ASP.NET
Özgün KB numarası: 306359
Belirtiler
değişkenine Request.ServerVariables("LOGON_USER")
ASP.NET erişmeye çalışırsanız boş bir dize döndürülür.
Microsoft Visual C# .NET kullanıyorsanız, aşağıdaki söz dizimi bu değişkene erişir:
Request.ServerVariables["LOGON_USER"]
Neden
Bu sorun, .aspx sayfasına erişmek için Anonim Erişim güvenliği kullanırsanız koleksiyondaki ServerVariables
kimlik doğrulamasıyla ilgili değişkenlerin doldurulmaması nedeniyle oluşur. Anonim kullanıcıya web.config dosyasının <authorization>
bölümünde erişim verdiğinizde de bu sorun oluşabilir.
Çözüm
dışında bir kimlik doğrulama modu kullandığınızda değişkeni doldurmak LOGON_USER
için ,web.config dosyasının <authorization>
bölümünde anonim kullanıcıya erişimi reddedebilirsiniz.None
Bölümünde anonim kullanıcıya <authorization>
erişimi reddetmek için şu adımları izleyin:
web.config dosyasındaki kimlik doğrulama modunu dışında
None
bir şeyle değiştirin. Örneğin, web.config dosyasındaki aşağıdaki giriş, kimlik doğrulama modunu Forms tabanlı kimlik doğrulaması olarak ayarlar:<authentication mode="Forms" />
web.config dosyasında anonim kullanıcıya erişimi reddetmek için aşağıdaki söz dizimini kullanın:
<authorization> <deny users = "?" /> <!-- This denies access to the anonymous user --> <allow users ="*" /> <!-- This allows access to all users --> </authorization>
Windows kimlik doğrulaması kullanıyorsanız, bu sorunu çözmek için aşağıdaki adımları da kullanabilirsiniz:
web.config dosyasındaki
Windows
kimlik doğrulama modunu şu şekilde değiştirin:<authentication mode="Windows" />
Internet Services Manager'da .aspx dosyasına veya Web Projesi klasörüne sağ tıklayın ve özellikler'i seçin.
Web Projesi klasörünün Özellikler'i seçerseniz Dizin Güvenliği sekmesini seçin. .aspx dosyası için Özellikler'i seçerseniz Dosya Güvenliği sekmesini seçin.
Anonim Erişim ve kimlik doğrulama denetimi'nin altında Düzenle'yi seçin.
Kimlik doğrulama yöntemleri iletişim kutusunda Anonim Erişim onay kutusunu temizleyin ve ardından Temel, Özet veya Tümleşik (NT Sınaması/Yanıt) onay kutusunu seçin.
Her iki iletişim kutusunu da kapatmak için Tamam'ı seçin.
Durum
Bu davranış tasarımdan kaynaklanır.
Daha fazla bilgi
ASP.NET, .config dosyalarında yapılandırabileceğiniz yeni kimlik doğrulama modları ve yetkilendirme düzenleri sağlar. Bu nedenle, yalnızca IIS'de kimlik doğrulama modlarını değiştirmek her zaman istenen sonuçları vermeyebilir. Bu nedenle, .config dosyalarındaki güvenlik ayarlarını da göz önünde bulundurmanız gerekir.
Not
Anonim kimlik doğrulamasını Windows kimlik doğrulamasıyla birlikte etkinleştirdiğinizde veya dışında herhangi bir kimlik doğrulama modu None
kullanırken bölümünde anonim kullanıcıya <authorization>
erişim izni verirseniz ve REMOTE_USER
gibi AUTH_USER
diğer sunucu değişkenleri de (HttpContext.Current.User.Identity.Name
özellik) boş bir dize döndürür. Bu değişkenleri doldurmak için yukarıda belirtilen çözümlerden herhangi birini kullanabilirsiniz.
ASP.NET'de, Anonim Erişim güvenliğinin Request
kullanılıp kullanılmadığını belirlemek için nesnesinin özelliğini de kullanabilirsinizIsAuthenticated
. IsAuthenticated
Anonim Erişim açıksa false döndürür ve , Passport
, Integrated (NT Challenge/Response)
veya Basic
gibi Forms
başka bir kimlik doğrulama aracı kullanırsanız true döndürür.
Başvurular
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin