我正在尝试检索登录到ASP.NET内部网上的计算机的用户名和客户端计算机名。这仅用于记录目的。我检索用户名“System.Security.Principal.WindowsIdentity.GetCurrent()。Name”,问题是访问该站点的人显示所有的用户名(即我已部署我的应用程序的服务器名称)。请帮忙。我在web.config中使用Windows身份验证模式。
答案 0 :(得分:2)
用户的姓名可以如@Mehrdad所述。对于用户机器的名称,您可以使用 HttpRequest 对象,如下所示:
if(Request.IsAuthenticated)
string userName = Request.LogonUserIdentity.Name;
string machineAddress = Request.UserHostAddress;
string machineName = Request.UserHostName;
(编辑)
在web.config文件中我正在使用这一行:
<system.web>
<authentication mode="Windows"/>
</system.web>
在default.aspx.cs中,我正在使用它:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
if (Request.IsAuthenticated)
{
sb.AppendFormat("User Name: {0}<br/>", Request.LogonUserIdentity.Name);
}
else
{
sb.Append("Request not authenticated");
}
sb.AppendFormat("Machine Address: {0}<br/>", Request.UserHostAddress);
sb.AppendFormat("Machine Name: {0}<br/>", Request.UserHostName);
lblTest.Text = sb.ToString();
}
}
这是在输出之后产生的:
用户名:HPAS \ amantur
机器地址:127.0.0.1
计算机名称:127.0.0.1
答案 1 :(得分:1)
您正在使用的代码将获得与当前线程(运行ASP.NET的身份)相关联的WindowsIdentity
。除非您基于客户端用户身份进行模拟,否则将无效。你需要使用它:
HttpContext.Current.User.Identity.Name