Как узнать, в какой учетной записи работает мой код ASP.NET?
Я получаю сообщение об ошибке "Доступ к пути отклонен" при запуске в режиме отладки. Я пробовал предоставить разрешения для {MACHINENAME}\ASPNET и NETWORK SERVICE, но это не имело никакого значения. У меня также есть try < impersonate = true/" > , используя учетную запись администратора, это также не имело значения. Итак, как мне установить, какая именно учетная запись используется?
Ответы
Ответ 1
Чтобы узнать, какая учетная запись NT для вашего приложения работает в любой момент времени, сделайте что-то вроде (в VB.NET):
Dim User = System.Security.Principal.WindowsIdentity.GetCurrent.User
Dim UserName = User.Translate(GetType(System.Security.Principal.NTAccount)).Value
При использовании ASP.NET эта учетная запись будет соответствовать идентификатору пула приложений, который вы настраиваете с помощью диспетчера IIS. Обратите внимание, что анонимный пользователь IIS не очень сильно связан с запросами ASP.NET.
Ответ 2
Код С# для ответа vb.net
var user = System.Security.Principal.WindowsIdentity.GetCurrent().User;
var userName = user.Translate(typeof (System.Security.Principal.NTAccount));
Ответ 3
Вы можете использовать этот код:
С#
Response.Write("Windows Account which runs ASP.NET is: "
+ Environment.Username);
VB.NET
Response.Write("Windows Account which runs ASP.NET is: " _
& Environment.Username)
Если вы запустите свое приложение в Visual Studio на своем ПК (localhost), вы получите свое имя пользователя. Если вы развертываете веб-приложение ASP.NET в IIS, вы, вероятно, получите учетную запись NETWORK SERVICE, потому что это пользователь по умолчанию, работающий с IIS 6.0 (ASPNET на Windows Server 2000 IIS 5.0).
Environment.UserName
возвращает текущий пользователь в настоящий момент. Page.User
возвращает имя, которое ASP.NET проверяет с помощью аутентификации, и этот пользователь в большинстве случаев не зависит от входа в систему Windows, который работает с текущим потоком. Для анонимных запросов страница .User пуста, а Environment.User - NETWORK SERVICE.
Как mdb правильно указывает в комментарии к этому ответу, Environment.Username просто вернет переменную среды USERNAME, которая задана при создании процесса, а не обновляется в случае олицетворения и т.д.
Ответ 4
strint t=System.Web.Security.Membership.GetUser().UserName.ToString();