首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Asp Net Web API 2.1获取客户端IP地址

Asp Net Web API 2.1获取客户端IP地址
EN

Stack Overflow用户
提问于 2014-03-20 20:19:08
回答 9查看 151.5K关注 0票数 124

您好,我需要获取客户端IP,这是请求在web api中的一些方法,我已经尝试使用此代码从here,但它总是返回服务器本地IP,如何获得正确的方式?

代码语言:javascript
运行
复制
HttpContext.Current.Request.UserHostAddress;

从其他问题中:

代码语言:javascript
运行
复制
public static class HttpRequestMessageExtensions
    {
        private const string HttpContext = "MS_HttpContext";
        private const string RemoteEndpointMessage = "System.ServiceModel.Channels.RemoteEndpointMessageProperty";

        public static string GetClientIpAddress(this HttpRequestMessage request)
        {
            if (request.Properties.ContainsKey(HttpContext))
            {
                dynamic ctx = request.Properties[HttpContext];
                if (ctx != null)
                {
                    return ctx.Request.UserHostAddress;
                }
            }

            if (request.Properties.ContainsKey(RemoteEndpointMessage))
            {
                dynamic remoteEndpoint = request.Properties[RemoteEndpointMessage];
                if (remoteEndpoint != null)
                {
                    return remoteEndpoint.Address;
                }
            }

            return null;
        }
    }
EN

Stack Overflow用户

发布于 2014-04-11 05:08:42

如果您使用OWIN自托管NuGet包在Asp.Net 2.1上进行自托管,则可以使用以下代码:

代码语言:javascript
运行
复制
 private string getClientIp(HttpRequestMessage request = null)
    {
        if (request == null)
        {
            return null;
        }

        if (request.Properties.ContainsKey("MS_OwinContext"))
        {
            return ((OwinContext) request.Properties["MS_OwinContext"]).Request.RemoteIpAddress;
        }
        return null;
    }
票数 10
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22532806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档