如何从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"]
答案 0 :(得分:1)
您可以启用WCF服务来访问ASP.Net http上下文并从上下文中获取地址:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
...
</system.serviceModel>
在此之后,您将能够访问 HttpContext.Current.Request.UserHostAddress 属性以获取发件人详细信息