如何从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/

10-12 00:28