Как узнать, в какой учетной записи работает мой код 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();