Как получить IP-адрес клиента в стандарте. net? - PullRequest
0 голосов
/ 11 июля 2020

Мне нужно получить IP-адрес клиента. net стандартное приложение библиотеки классов 2.1.

Я использую приведенный ниже код. Он работает, как ожидалось, в структуре. net, но дает ошибка компиляции в. net standard.

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

Ошибка CS1061 «HttpRequest» не содержит определения для «ServerVariables» и нет доступного метода расширения «ServerVariables», принимающего первый аргумент типа « HttpRequest 'может быть найден (вам не хватает директивы using или ссылки на сборку?)

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

Я использовал это и работает у меня:

    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 "";
        }

    }
0 голосов
/ 11 июля 2020

Вы используете. NET Стандарт, который не содержит таких зависимостей, как (HttpRequest и его методы расширений), поэтому вам нужно либо установить пакеты Nuget, связанные с HttpRequest, либо преобразовать ваш. NET стандартный проект в. NET WebApp. Первый содержит пакеты, содержащие ваш HttpRequest.

Ссылка: HttpContext в. net стандартная библиотека

...