У меня есть веб-приложение веб-форм asp.net 4.5, развернутое на удаленном сервере IIS7 +, и я хочу, чтобы домен \ имя пользователя пользователя заполнил столбец базы данных.Как получить пользователя Windows в asp.net webApp на IIS7 +
Мой web.config имеет следующее:
<system.web>
<authentication mode="Windows" />
<identity impersonate="true" /> <!-- I have tried with and without impersonate-->
<authorization>
<deny users="?"/>
</authorization>
...other stuff
</system.web>
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
<modules>
<remove name="FormsAuthentication" />
</modules>
Вот некоторые из вещей, которые я попробовал:
String username = Membership.GetUser().UserName;
= HttpContext.Current.User.Identity.Name;
= Page.User.Identity;
= User.Identity.Name;
= Environment.Name; // Or something similar to this I don't remember exactly.
Другие вещи, чтобы отметить:
для Windows аутентификация включена на сервере для моего веб-приложения.
Я использую имя сервера вместо имени пользователя.
Кроме того, для моего веб-приложения нет входа в систему. Пользователи имеют ограниченный доступ к серверу, но если они могут получить доступ к серверу, они автоматически получают доступ к моему веб-приложению.
[UPDATE]
Интересный прорыв, если бы я сделать инлайн
<% Response.Write(HttpContext.Current.User.Identity.Name.ToString()); %>
затем MYDOMAIN \ имя пользователя записывается на моей странице. Однако, если я делаю ту же сторону сервера кода, он возвращает имя сервера. Почему бы ему вернуть что-то другое?
Я пробовал приведенный ниже код, но он по-прежнему возвращает имя сервера, я предполагаю его, потому что встроенный клиент работает на стороне клиента, а элементы управления работают на стороне сервера.
<asp:Label ID="LabelID" Text=" <% HttpContext.Current.User.Identity.Name.ToString(); %>" />
затем в CodeBehind
String curUser = LabelID.Text;
До сих пор ни один из них не работал. Все они возвращают имя пользователя admin. Я дважды проверяю с помощью администратора окна, чтобы убедиться, что анонимный доступ отключен на сервере, но я уверен, что это так. Любые другие идеи? –
Вы пытались выполнить решение в верхнем звене: т. Е. <авторизация> authorization> –
Jon
Я попытался это безрезультатно. Кроме того, я не совсем понимаю ответ в ссылке «Как ...». –