如何找出我的ASP.NET代码在哪个帐户下运行?

时间:2008-11-09 10:57:39

标签: asp.net security

在调试模式下运行时,我收到“访问路径被拒绝”错误消息。我已经尝试授予{MACHINENAME} \ ASPNET和NETWORK SERVICE的权限,但这没有任何区别。我也有尝试< impersonate = true />使用管理员帐户,这也没有区别。那么如何准确确定正在使用哪个帐户?

4 个答案:

答案 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();