如何在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。
- 激活Windows集成身份验证
- 关闭匿名用户
但是,我真的是IIS的新手。请详细解释技术,我必须做什么。
您可以通过以下方式在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);