2015-07-01 1 views
0

В моем веб-приложении ASP.net после аутентификации пользователя с помощью проверки подлинности форм я пытаюсь прочитать имя пользователя от HttpContext.Current.User.Identity.Name.ASP.net: HttpContext.Current.User.Identity.Name пуст в IIS 7.5, но не на IIS Express

Когда я запускаю это на своей персональной машине, использующей IIS Express, это работает отлично. Когда я запускаю его на сервере под IIS 7.5, это выражение всегда оценивается до string.Empty.

Почему это и как его можно смягчить?

Примечание: это не дубликат «HttpContext.Current.User.Identity.Name is Empty», потому что этот вопрос касается веб-сервера, встроенного в Visual Studio.

Примечание 2: В моем случае анонимный доступ не отключен. Если это действительно является причиной проблемы, можете ли вы объяснить, почему?

ответ

2

HttpContext.Current.User.Identity.Name использует LDAP для определения вашего имени пользователя Windows.

Это работает, потому что, когда анонимный доступ отключен, ваш компьютер должен «войти» с вашей идентификацией Windows, чтобы получить доступ к сайту (не анонимно). Из-за этого сайт знает, кто вы и может вернуть правильные данные.

Если включен анонимный доступ, ваш компьютер использует самый быстрый/простой способ доступа (анонимный) и возвращает вам веб-страницу. IIS тогда только знает вас как анонимный, поэтому не может указать вам имя.

+0

Спасибо! Любая идея, почему в IIS Express это работает? – urig

+1

Я предполагаю, что у него уже есть учетные данные, потому что он работает локально. – oppassum

+0

Правильный способ получить информацию для входа в систему - через 'Page.User' или' Controller.User'. Кроме того, IIS и IIS Express отличаются, https://blog.lextudio.com/2015/04/web-application-differences-in-visual-studio-and-iis/ –

 Смежные вопросы

  • Нет связанных вопросов^_^