首页新闻找找看学习计划

ASP。net获取客户端的IP+端口

0
悬赏园豆:20 [待解决问题]

已试用1、 IServiceProvider provider = (IServiceProvider)HttpContext.Current;
                    HttpWorkerRequest request = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));

string port=request.GetRemotePort().ToString();

2、string port=Request.ServerVariables["REMOTE_PORT"].ToString();

在本地IIS 访问可以获取到端口,发布在服务器上就不行了,获取都是0;

请高手们帮忙!

问题补充:

HttpContext.Current.Request.Url.Port; 是获取请求的服务器的端口,不是客户端的端口;

IP地址获取现在是没有问题;访问经过4层交换机后在到目标服务器,这样是不是没有办法获取到端口?

shenrq163的主页 shenrq163 | 初学一级 | 园豆:96
提问于:2012-11-02 15:12
< >
分享
所有回答(5)
0

获取端口  HttpContext.Current.Request.Url.Port

获取IP

private string getIp()
    {
        // 穿过代理服务器取远程用户真实IP地址
        string Ip = string.Empty;
        if (Request.ServerVariables["HTTP_VIA"] != null)
        {
            if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] == null)
            {
                if (Request.ServerVariables["HTTP_CLIENT_IP"] != null)
                    Ip = Request.ServerVariables["HTTP_CLIENT_IP"].ToString();
                else
                    if (Request.ServerVariables["REMOTE_ADDR"] != null)
                        Ip = Request.ServerVariables["REMOTE_ADDR"].ToString();
                    else
                        Ip = "202.96.134.133";
            }
            else
                Ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
        } 
        else if (Request.ServerVariables["REMOTE_ADDR"] != null)
        {
            Ip = Request.ServerVariables["REMOTE_ADDR"].ToString();
        }
        else
        {
            Ip = "202.96.134.133";
        }
        return Ip;
    }
sym_cn | 园豆:798 (小虾三级) | 2012-11-02 15:21
0

服务器上面是不是设置了权限

墨猦 | 园豆:668 (小虾三级) | 2012-11-02 15:24
0

Request.UserHostAddress

田林九村 | 园豆:2367 (老鸟四级) | 2012-11-02 15:24
0

Request.ServerVariables["SERVER_PORT"]服务器接受请求的端口。 

问天何必 | 园豆:3291 (老鸟四级) | 2012-11-02 16:11
0

目前都是代理的应该很难获取到真正的ip吧,路由从启一下ip又变了

jason2013 | 园豆:1998 (小虾三级) | 2012-11-02 16:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册