如何从WCF asmx C#获取客户端的计算机名称?
我已经尝试过这种方法,但它根本不起作用。
这是我想到的最好的解决方案,但是它不起作用...好的结果是返回客户端的计算机名,但有时它返回计算机名A,有时返回计算机名B。
string[] computer_name = System.Net.Dns.GetHostEntry(
HttpContext.Current.Request.ServerVariables["remote_addr"])
.HostName.Split(new Char[] { '.' });
logData.ComputerName = computer_name[0].ToString();
结果是来自WCF而不是客户端的计算机名称。
System.Environment.MachineName
与1相同的结果,但有时返回
Empty
。System.Net.Dns.GetHostByName("LocalHost").HostName.
返回
Null
。OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name
返回IP,IP和客户的用户
loginRequest.ServerVariables["remote_addr"],
Request.ServerVariables["remote_host"],
Request.ServerVariables["remote_user"]
最佳答案
您可以启用WCF服务来访问ASP.Net http上下文并从上下文中获取地址:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
...
</system.serviceModel>
之后,您将能够访问HttpContext.Current.Request.UserHostAddress属性以获取发件人详细信息
关于c# - 如何从WCF asmx C#获取客户端的计算机名称?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38710816/