在调试模式下运行时,我收到"访问路径被拒绝"错误消息.我尝试授予{MACHINENAME}\ASPNET和NETWORK SERVICE权限,但这没有任何区别.我也试过
用于vb.net的C#代码答案
var user = System.Security.Principal.WindowsIdentity.GetCurrent().User; var userName = user.Translate(typeof (System.Security.Principal.NTAccount));
要找出您的应用程序在任何给定时间运行的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请求的关系不大.
你可以使用这段代码:
C#
Response.Write("Windows Account which runs ASP.NET is: " + Environment.Username);
VB.NET
Response.Write("Windows Account which runs ASP.NET is: " _ & Environment.Username)
如果您在PC上的Visual Studio中运行应用程序(localhost),您将获得您的用户名.如果在IIS上部署ASP.NET Web应用程序,则可能会获得NETWORK SERVICE帐户,因为这是运行IIS 6.0的默认用户(Windows Server 2000的IIS 5.0上的ASPNET).
Environment.UserName
返回线程当前登录的用户.Page.User
返回ASP.NET通过身份验证验证的名称,在大多数情况下,此用户独立于运行当前线程的Windows登录.对于匿名请求Page.User为空,而Environment.User为NETWORK SERVICE.
正如mdb在对此答案的注释中正确指出的那样,Environment.Username将只返回USERNAME环境变量,该变量在进程创建时设置,并且在模拟等情况下不会更新.