我使用这样的代码来查找远程用户名:
banner_label.Text = "Welcome, <B>" + User.Identity.Name + "</B>!"
我还想找到远程主机名。 我的生产环境将是具有活动目录的企业内部网。
答案 0 :(得分:3)
您在Intranet上,因此Request.UserHostName应该适合您。如果您有一个复杂的网络,一些路由器可能不会通过这些信息,但是......
这是我在之前的工作中在应用程序中所做的类似事情,用于记录IP和主机名:
// NAT'ed addresses are sometimes still shown in HTTP_X_FORWARDED_FOR
string userHost = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (String.IsNullOrEmpty(userHost) || String.Compare(userHost, "unknown", true) == 0)
userHost = Request.UserHostAddress;
if (String.Compare(userHost, Request.UserHostName) != 0)
userHost += " (" + Request.UserHostName + ")";
然后我会在每次登录尝试时将此字符串记录在数据库中。
编辑:浏览上面的回复...认为这段代码符合您的要求,让我去测试并查看。
不确定为什么上面的代码在我以前的工作中起作用。这不可靠,这就是为什么我把if语句放在它周围的原因,但我认为它半可靠地返回主机名...在线帖子说它与匿名访问有关。
无论如何,这可以让你得到你想要的东西,并且因为你在内联网上而应该可靠地工作:
System.Net.Dns.GetHostEntry(userHost).HostName
答案 1 :(得分:1)
我相信你可以使用HttpContext.Current.Request.ServerVariables["REMOTE_HOST"]
,但要注意这些信息非常不可靠。发送给你的任何东西都可以被欺骗。
此外,我认为这不会在互联网上发挥作用。
答案 2 :(得分:0)
也许这对你有用
Request.UserHostName
编辑:
我认为你要做的事情不会在互联网上工作,你想要得到的是计算机的名称,它不会随请求一起传送到服务器。
答案 3 :(得分:0)
我用Google搜索并找到了Request.UserHostName,但这只在我的开发环境中返回了127.0.0.1。
我试过这个
System.Net.DNS.GetHostName
这成功地返回了我的主机名。但是,由于我仍然在dev中,我的客户端和服务器在同一台机器上,我仍然需要进行测试以确保它实际上给了我远程主机名而不是服务器名。