Request.ServerVariables("LOGON_USER") VS2010 и VS2012
Я столкнулся с очень странной для меня вещью. Я начал разработку веб-сайта в Visual Studio 2010 и закончил в 2012 году. Это VB.NET, фреймворк 4.0. На всем веб-сайте я использую Request.ServerVariables("LOGON_USER"). Все работает как надо.
Недавно я начал разработку другого веб-сайта с использованием 2012 с самого начала. Что происходит, Request.ServerVariables ("LOGON_USER") не возвращает никакого значения! Это просто пусто! Однако, если я открою это же приложение в Visual Studio 2010, оно будет работать!
Кто-нибудь может объяснить, что здесь происходит и как я могу это исправить в VS2012? Спасибо!
1 ответ
Эта проблема возникает из-за того, что относящиеся к аутентификации переменные в коллекции ServerVariables не заполняются, если вы используете безопасность анонимного доступа для доступа к странице.aspx. Эта проблема также может возникнуть, если вы предоставите анонимному пользователю доступ в разделе файла Web.config.
Чтобы заполнить переменную LOGON_USER при использовании любого режима аутентификации, кроме None, вы можете запретить доступ анонимному пользователю в разделе web.config.
Просто измените режим аутентификации в файле Web.config на любой другой, кроме None. Например, следующая запись в файле Web.config устанавливает режим проверки подлинности на основе форм:
<authentication mode="Forms" /> <!-- To deny access to the Anonymous user in the Web.config file, use the following syntax: --!> <authorization> <deny users = "?" /> <!-- This denies access to the Anonymous/unregistered user --> <allow users ="*" /> <!-- This allows access to all registered users --> </authorization>
Я не уверен, почему это отличается от VS 2010 и 2012, но это случалось со мной раньше, и я использовал вышеупомянутые шаги, чтобы исправить это. Как я уже сказал, просто проверьте ваш файл web.config!
Надеюсь, что это ответ на ваш вопрос!