如何发现运行ASP.Net应用程序的IIS帐户?

时间:2018-04-10 13:50:09

标签: c# asp.net iis

我需要确保当C#(。Net 4.6.2)ASP.Net应用程序启动时,它的根文件夹中有一个可以写入临时数据的本地文件夹。我可以让应用程序创建文件夹(如果它不存在),但如何确定应用程序安装在哪个IIS帐户下? (我无法控制这一点,并希望确保只有该帐户具有必要的权限)。这主要是应用程序池标识,但有时不是。

TIA

1 个答案:

答案 0 :(得分:0)

有几种不同的方法可以获取进程正在运行的身份(帐户) - 就像在IIS中一样。可能最简单的是Request.ServerVariables()https://msdn.microsoft.com/en-us/library/ms524602.aspx

//I think this is the one you are asking about
Request.ServerVariables("APP_POOL_ID");
//if your request is not anonymous
Request.ServerVariables("LOGON_USER");
Request.ServerVariables("REMOTE_USER");

否则,如果您使用经过身份验证的(非匿名)asp.net页面,则可以从System.Security.Principal.WindowsIdentity.GetCurrent获取更多信息

System.Security.Principal.WindowsIdentity wi;
wi = System.Security.Principal.WindowsIdentity.GetCurrent();
var sid = wi.User.Value;