C#如何获取请求服务器的IP地址?

倾斜的水瓶座 2017-10-23 10:35:57
请问,如果获取请求服务器的IP地址?
用户通过A网站请求B网站的服务,B网站为了验证请求的合法性,需要获取A网站的IP地址。然后进行判断。如果IP不是A网站的IP。那么不返回数据,如果是A网站的IP地址,才返回数据。
C#代码应该如何写呢?
...全文
1309 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zanghao8888 2017-11-29
  • 打赏
  • 举报
回复
引用 6 楼 weixin_40706162 的回复:
建议去看看Fidder
QQQQ
zanghao8888 2017-11-29
  • 打赏
  • 举报
回复
[quote=引用 7 楼 uk340721 的回复:] 通过域名解析IP [code=csharp] using System.Net; (请忽略我。。。。。)
xzxmustwin 2017-11-29
  • 打赏
  • 举报
回复
 /// <summary>
    /// 获取web客户端ip
    /// </summary>
    /// <returns></returns>
    public static string GetWebClientIp()
    {

        string userIP = "未获取用户IP";

        try
        {
            if (System.Web.HttpContext.Current == null
        || System.Web.HttpContext.Current.Request == null
        || System.Web.HttpContext.Current.Request.ServerVariables == null)
                return "";

            string CustomerIP = "";

            //CDN加速后取到的IP simone 090805
            CustomerIP = System.Web.HttpContext.Current.Request.Headers["Cdn-Src-Ip"];
            if (!string.IsNullOrEmpty(CustomerIP))
            {
                return CustomerIP;
            }

            CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];


            if (!String.IsNullOrEmpty(CustomerIP))
                return CustomerIP;

            if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
            {
                CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                if (CustomerIP == null)
                    CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            }
            else
            {
                CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

            }

            if (string.Compare(CustomerIP, "unknown", true) == 0)
                return System.Web.HttpContext.Current.Request.UserHostAddress;
            return CustomerIP;
        }
        catch { }

        return userIP;

    }

    /// <summary>
    /// 获取本机IP地址
    /// </summary>
    /// <returns></returns>
    public static string GetIpAddress()
    {
        string hostName = Dns.GetHostName();   //获取本机名
        IPHostEntry localhost = Dns.GetHostByName(hostName);    //方法已过期,可以获取IPv4的地址
        IPAddress localaddr = localhost.AddressList[0];

        return localaddr.ToString();
    }
一个获取客户端的,一个获取本机的
uk340721 2017-11-28
  • 打赏
  • 举报
回复
通过域名解析IP

using System.Net;


IPAddress[] ips= Dns.GetHostAddresses("www.baidu.com");
string ip = ips[0].ToString();
weixin_40706162 2017-11-28
  • 打赏
  • 举报
回复
建议去看看Fidder
by_封爱 版主 2017-10-24
  • 打赏
  • 举报
回复
引用 3 楼 sinat_28984567 的回复:
string ip = Request.UserHostAddress;

 string ip=HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
二月十六 2017-10-24
  • 打赏
  • 举报
回复
string ip = Request.UserHostAddress;
猿猿猿 2017-10-24
  • 打赏
  • 举报
回复
string strUrl = "http://www.ip138.com/ip2city.asp"; //获得IP的网址了 Uri uri = new Uri(strUrl); System.Net.WebRequest wr = System.Net.WebRequest.Create(uri); System.IO.Stream s = wr.GetResponse().GetResponseStream(); System.IO.StreamReader sr = new System.IO.StreamReader(s, Encoding.Default); string all = sr.ReadToEnd();
lgs_div 2017-10-24
  • 打赏
  • 举报
回复
建议配合js实现
threenewbee 2017-10-24
  • 打赏
  • 举报
回复
引用 4 楼 diaodiaop 的回复:
[quote=引用 3 楼 sinat_28984567 的回复:]
string ip = Request.UserHostAddress;

 string ip=HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
[/quote] 前者是请求的地址,后者是如果请求来自代理服务器,那么所代理的机器的地址 用前一个会使得使用代理访问的被视作同一个地址,使用后者,后者可以伪造。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧