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