我有这段代码:
localIp = Request.UserHostName
hostName = DetermineCompName(localIp)
Session.Add("localIp", localIp)
Session.Add("hostName", hostName)
正如您所看到的,我将2个变量放在会话上,以便我可以在需要时使用它。在10台计算机上测试应用程序,我在某些计算机上看到它获取了客户端IP和计算机名称,但在其他计算机上则显示为空。
正如在某些计算机上工作一样,我不明白什么是错的。有没有人有正确的方法来做到这一点?
答案 0 :(得分:2)
要获取计算机名称,您只需执行以下操作:
Dim hostName As String = Environment.MachineName
或:
Dim hostName As String = My.Computer.Name
对于IP来说它有点棘手,我猜你想要ipV4,所以你可以试试这个:
Dim localIp As String
For Each address As System.Net.IPAddress In System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList
If address.AddressFamily = Net.Sockets.AddressFamily.InterNetwork Then
localIp = address.ToString()
Exit For
End If
Next
请注意,如果您这样做:
System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList(0).ToString()
然后这将返回ipV6。