Получить идентификатор пула приложений программно

Как получить идентификатор appPool программно в C#? Я хочу, чтобы пользователь пула приложений, а не пользователь, который в настоящее время вошел в систему.

2 ответа

Решение

Вы могли бы использовать System.Security.Principal.WindowsIdentity.GetCurrent().Name идентифицировать личность, в которой запущено текущее приложение. Эта ссылка предоставляет хорошую утилиту, которая отображает личность, под которой запускается aspx.

Вам нужно сделать ссылку на Microsoft.Web.Administration (в Microsoft.Web.Administration.dll). Microsoft.Web.Administration.dll находится в C:\Windows\System32\inetsrv.

//Add this to your using statements:
using Microsoft.Web.Administration;

//You can get the App Pool identity like this:    
public string GetAppPoolIdentity(string appPoolName)
{
    var serverManager = new ServerManager();

    ApplicationPool appPool = serverManager.ApplicationPools[appPoolName];
    appPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser;
    return appPool.ProcessModel.UserName;            
}

Другая возможность, которая, кажется, работает для меня и не требует установки пакета Microsoft.Web.Administration и его зависимостей:

string appPoolUserIdentity = WindowsIdentity.GetCurrent().Name;

С сайта forum.asp.net

Другие вопросы по тегам