Asp Net Web API 2.1 get client IP address

后端 未结 9 1052
逝去的感伤
逝去的感伤 2020-11-27 11:12

Hello I need get client IP that request some method in web api, I have tried to use this code from here but it always returns server local IP, how to get in correct way ?

9条回答
  •  隐瞒了意图╮
    2020-11-27 11:27

    It's better to cast it to HttpContextBase, this way you can mock and test it more easily

    public string GetUserIp(HttpRequestMessage request)
    {
        if (request.Properties.ContainsKey("MS_HttpContext"))
        {
            var ctx = request.Properties["MS_HttpContext"] as HttpContextBase;
            if (ctx != null)
            {
                return ctx.Request.UserHostAddress;
            }
        }
    
        return null;
    }
    

提交回复
热议问题