2014-06-19 3 views
2

Я пытаюсь использовать System.Threading.Thread.CurrentPrincipal.Identity.Name, чтобы получить логин того, кто использует приложение ASP.NET. Я не получаю ошибок сборки, но возвращает пустое значение. Я использую IIS 6 и вот мои параметры проверки подлинности:CurrentPrincipal.Identity.Name is blank

Anonymous Authentication: Отключено

ASP.NET олицетворения: Инвалид

Basic Authentication: Enabled

Проверка подлинности Windows: Enabled

У меня нет настроек авторизации в моем файле webconfig. Вот метод, который я использую, чтобы попытаться получить логин.

public void SetUser() 
    { 
     string login = System.Threading.Thread.CurrentPrincipal.Identity.Name; 
    } 

У меня есть точки останова, чтобы проверить значение и говорит логин = «»

Как я могу получить логин?

EDIT

Вот моя картина аутентификации: enter image description here

+0

Можете ли вы уточнить, что происходит в терминах set/get/void? Вы называете его «SetUser», но он извлекает значение и ничего не делает с ним. Как насчет машины, на которой это работает? Является ли это обычным сервером Windows или виртуальной машиной или облаком и т. Д.? Вы пытались запустить простую программу только с этой машины? Я спрашиваю, потому что это работает для меня, поэтому я пытаюсь выяснить, что для вас другое. – radumanolescu

+0

«Текущий директор» настраивается. Возможно ли, что какая-то другая часть программы установила его в пустое значение? См. Http://msdn.microsoft.com/en-us/library/system.threading.thread.currentprincipal(v=vs.110).aspx – radumanolescu

+0

SetUser() будет извлекать значение для входа. Я буду использовать логин, чтобы извлекать записи из базы данных, чтобы узнать, разрешены ли они. У меня нет логики для этого, я просто пытаюсь получить значение в первую очередь. Я запускаю это на обычной ОС Windows 7 локально. – user3062114

ответ

2

я смог это исправить. В моих свойствах проекта я использовал IIS express, поэтому мое приложение не попало в мой фактический IIS. Я не заметил этого, создал виртуальный каталог и отключил всю аутентификацию, кроме Windows Authentication, и теперь он работает.

+0

Я не согласен. Он не работал, и для кого-то это может быть проблемой. – user3062114

+0

спасибо mate ..., который решил мою проблему – Amol

+0

@Amol, если он решил вашу проблему, тогда вы можете отметить это сообщение как принятый ответ, нажав на серый галочку ниже кнопок голосования. Это помогает сообществу сосредоточиться на нерешенных вопросах. – RBT

2

Thread.CurrentPrincipal = новый WindowsPrincipal (WindowsIdentity.GetCurrent());

Работал для меня. У меня была такая же проблема.