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!

Надеюсь, что это ответ на ваш вопрос!

Другие вопросы по тегам