37

如何在 C# 中以编程方式获取 appPool 的标识?我想要应用程序池用户而不是当前登录的用户。

4

3 回答 3

54

您可以使用System.Security.Principal.WindowsIdentity.GetCurrent().Name来标识当前应用程序正在其中运行的身份。此链接提供了一个很好的实用程序,它显示了运行 aspx 的身份。

于 2012-04-11T07:07:42.407 回答
8

您需要参考 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;            
}
于 2017-08-30T10:55:24.163 回答
1

另一种对我来说似乎可以正常工作并且不需要安装 Microsoft.Web.Administration 包及其军团依赖项的可能性:

string appPoolUserIdentity = WindowsIdentity.GetCurrent().Name;

来自forums.asp.net

于 2020-07-08T12:58:35.483 回答