如何从WCF asmx C#获取客户端的计算机名称?

时间:2016-08-02 02:17:47

标签: c# asp.net wcf web asmx

如何从WCF asmx C#获取客户端的计算机名称?

我尝试过这种方式,但它根本不起作用。

  1. 这是我考虑过的最佳解决方案,但它不起作用...好的结果是返回客户端的计算机名称,但有时会返回计算机名称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();
    
  2. 结果是来自WCF而非客户端的计算机名称。

    System.Environment.MachineName
    
  3. 结果与1相同,但有时返回Empty

    System.Net.Dns.GetHostByName("LocalHost").HostName.
    
  4. 返回Null

    OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name
    
  5. 返回IP,IP和客户端

     loginRequest.ServerVariables["remote_addr"],
     Request.ServerVariables["remote_host"],
     Request.ServerVariables["remote_user"]
    

1 个答案:

答案 0 :(得分:1)

您可以启用WCF服务来访问ASP.Net http上下文并从上下文中获取地址:

<system.serviceModel>            
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
...
</system.serviceModel>

在此之后,您将能够访问 HttpContext.Current.Request.UserHostAddress 属性以获取发件人详细信息