如何在c#中获取windows登录名

本文关键字:windows 登录 获取 | 更新日期: 2023-09-27 18:28:48

我有一个带有C#的web应用程序,我想在其中获取用户登录的计算机名称。此页面将由另一个网址调用。

我试过几种方法,但没有得到我想要的结果。这是我的代码:

1. txtBookBy.Text = WindowsIdentity.GetCurrent().Name;
2. txtBookBy.Text = User.Identity.Name;
3. txtBookBy.Text = Request.ServerVariables[5];
4. txtBookBy.Text = System.Environment.UserName;
5. txtBookBy.Text = Request.ServerVariables["LOGON_USER"];
6. txtBookBy.Text = Request.QueryString["user"];

这就是结果,当我用另一个网址打电话时。

1. txtBookBy.Text = "compName'ASPNET";
2. txtBookBy.Text = "";
3. txtBookBy.Text = "";
4. txtBookBy.Text = "ASPNET";
5. txtBookBy.Text = "";
6. txtBookBy.Text = @Variable;

这就是我使用visualstudio运行时的结果。

1. txtBookBy.Text = "PT'asromi";
2. txtBookBy.Text = "PT'asromi";
3. txtBookBy.Text = "PT'asromi";
4. txtBookBy.Text = "asromi";
5. txtBookBy.Text = "PT'asromi";
6. txtBookBy.Text = @Variable;

我想要的结果:当我用另一个网址打电话时,结果像"asromi"

有些人告诉我重新配置IIS。

  1. 激活Windows集成身份验证
  2. 关闭匿名用户

但是,我真的是IIS的新手。请详细解释技术,我必须做什么。

如何在c#中获取windows登录名

您可以通过以下方式在Windows身份验证下获取用户的WindowsIdentity对象:

WindowsIdentity identity = HttpContext.Current.Request.LogonUserIdentity;

然后您就可以获得类似用户身份的信息。名称

请注意,这些代码需要有HttpContext,并且WindowsAuthentication应该在Web.config文件中启用

<security>
    <authentication>
        <anonymousAuthentication enabled="false" />
        <windowsAuthentication enabled="true" />
    </authentication>
</security>

尝试使用以下代码

public class DNSHelper
{
    /// <summary>
    /// Gets the username.
    /// </summary>
    /// <param name="request">The request.</param>
    /// <returns></returns>
    public static string GetUsername(System.Web.HttpRequest request)
    {
        try
        {
            return request.LogonUserIdentity.Name;
        }
        catch (InvalidOperationException ioex)
        {
            if (System.Web.HttpContext.Current.User != null)
            {
                return System.Web.HttpContext.Current.User.Identity.Name;
            }
            else
            {
                return string.Empty;
            }
        }
    }
}

示例:

var username = DNSHelper.GetUsername(System.Web.HttpContext.Current.Request);