在调试模式下运行时,我收到“访问路径被拒绝”错误消息。我已经尝试授予{MACHINENAME} \ ASPNET和NETWORK SERVICE的权限,但这没有任何区别。我也有尝试< impersonate = true />使用管理员帐户,这也没有区别。那么如何准确确定正在使用哪个帐户?
答案 0 :(得分:14)
vb.net回答的C#代码
var user = System.Security.Principal.WindowsIdentity.GetCurrent().User;
var userName = user.Translate(typeof (System.Security.Principal.NTAccount));
答案 1 :(得分:13)
要找出您的应用程序在任何给定时间运行的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请求的关系不大。
答案 2 :(得分:8)
您可以使用此代码:
<强> 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(localhost)上的Visual Studio中运行应用程序,您将获得您的用户名。如果在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环境变量,该变量在创建过程时设置,并且在模拟等情况下不会更新。 / em>的
答案 3 :(得分:-3)
strint t=System.Web.Security.Membership.GetUser().UserName.ToString();