代码之家  ›  专栏  ›  技术社区  ›  Vivek Nuna Chetan sabhaya

如何在.net标准中获取客户端的ip地址?

  •  0
  • Vivek Nuna Chetan sabhaya  · 技术社区  · 5 年前

    我需要在.net标准2.1类库应用程序中获取客户端的IP地址。

    我正在使用下面的代码,它在.net框架中按预期工作,但在.net标准中出现了编译错误。

    private string IPAddress { get { return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; } }
    

    错误CS1061“HttpRequest”不包含的定义 “ServerVariables”和没有可访问的扩展方法“ServerVariable” 可以找到接受“HttpRequest”类型的第一个参数( 您缺少使用指令或程序集引用吗?)

    0 回复  |  直到 5 年前
        1
  •  1
  •   E.J. Brennan    5 年前

    我用过这个,为我工作:

        public static string GetLocalIpAddress()
        {
            try
            {
                using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0))
                {
                    socket.Connect("8.8.8.8", 65530);
                    var endPoint = socket.LocalEndPoint as IPEndPoint;
                    Logger.LogMessage("Local Ip Address detected: " + endPoint.Address.ToString());
                    return endPoint.Address.ToString();
                }
            }
            catch (Exception ex)
            {
                Logger.LogMessage(null, "Error obtaining local ip address:" + ex.Message);
                return "";
            }
    
        }
    
        2
  •  0
  •   Bruno    5 年前

    你正在使用。NET标准,它不包含诸如(HttpRequest及其扩展方法)之类的依赖项,因此您需要安装链接到HttpRequest的Nuget包,或者转换您的。NET标准项目转换为。NET Web应用程序。前者包含保存HttpRequest的包。

    参考: HttpContext in .net standard library