C# 在ASP.NET Web API消息处理程序中获取客户端的IP地址,哪个选项更好

C# 在ASP.NET Web API消息处理程序中获取客户端的IP地址,哪个选项更好,c#,asp.net-web-api,ip-address,C#,Asp.net Web Api,Ip Address,到目前为止,我使用这段代码是为了在使用扩展的WebAPI消息处理程序中获取客户端的IP地址 public static string GetClientIPAddress(this HttpRequestMessage request) { if (request.Properties.ContainsKey("MS_HttpContext")) { return ((HttpContextBase)req

到目前为止,我使用这段代码是为了在使用扩展的WebAPI消息处理程序中获取客户端的IP地址

    public static string GetClientIPAddress(this HttpRequestMessage request)
    {        

        if (request.Properties.ContainsKey("MS_HttpContext"))
        {
            return ((HttpContextBase)request.Properties["MS_HttpContext"]).Request.UserHostAddress.ToString();

        }
        else if (request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name))
        {
          return ((RemoteEndpointMessageProperty)request.Properties[RemoteEndpointMessageProperty.Name]).Address.ToString();     

        }
        else
        {
            return null;
        }
    }
然而,今天我发现了一种简单的方法,效果很好,但我仍然有点担心哪种方法更好:

 HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : "0.0.0.0";

可能重复:。更好的方法取决于您的web api如何在IIS上托管web主机、使用OWIN自托管或自托管。托管在Windows Azure网站IIS中。。。所以我想我以前使用它的方式是正确的!