【问题标题】:How to find out which account my ASP.NET code is running under?如何找出我的 ASP.NET 代码在哪个帐户下运行?
【发布时间】:2008-11-09 10:57:39
【问题描述】:

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

【问题讨论】:

    标签: asp.net security


    【解决方案1】:

    要在任何给定时间找出您的应用在哪个 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】:

      vb.net 答案的 C# 代码

      var user = System.Security.Principal.WindowsIdentity.GetCurrent().User;
      var userName = user.Translate(typeof (System.Security.Principal.NTAccount));
      

      【讨论】:

        【解决方案3】:

        您可以使用以下代码:

        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 环境变量,该变量在进程创建时设置,在模拟等情况下不会更新。

        【讨论】:

        • 但请记住,Environment.Username 将仅返回 USERNAME 环境变量,该变量在进程创建时设置,在模拟等情况下不会更新。
        【解决方案4】:
        strint t=System.Web.Security.Membership.GetUser().UserName.ToString();
        

        【讨论】:

        • 为了未来读者的利益,您能否添加一些文字来解释为什么这个答案比旧答案更可取?
        • 这不起作用。这将返回登录用户的用户名 - 而不是 Web 应用程序的执行用户的用户名,这是 OP 要求的。
        猜你喜欢
        • 2019-08-23
        • 2012-12-11
        • 1970-01-01
        • 2022-10-08
        • 2011-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-15
        相关资源
        最近更新 更多