Получить IP-адрес клиента в общей библиотеке классов c # для WebAPI и WebApplication - PullRequest
0 голосов
/ 04 октября 2018

Мой бизнес-уровень является общим для WebApi и WebApplication.Необходимо отслеживать IP-адрес клиента для каждого действия.Искал в сети и пробовал это, но в разработке, но я думаю, что это для сервера.Я получаю IP-адрес сервера:

var host = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
string ipAddress = host.AddressList[1].ToString();

1 Ответ

0 голосов
/ 04 октября 2018

Вы можете попробовать этот метод расширения:

public static class HttpContextExtensions
    {
        public static string GetIpAddress(this HttpContext httpContext)
        {
            try
            {
                return httpContext.Connection.RemoteIpAddress.ToString();
            }
            catch
            {
                return string.Empty;
            }
        }
    }

Более старая версия .Net пример:

/// <summary>
        /// Gets the IP address for the current request, returns 0.0.0.0 if HttpsContext does not exist.
        /// </summary>
        /// <returns></returns>
        public static string GetIpAddress()
        {
            var context = HttpContext.Current;
            var ipAddress = String.Empty;

            if (context != null)
            {
                ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

                if (String.IsNullOrWhiteSpace(ipAddress))
                {
                    ipAddress = context.Request.ServerVariables["REMOTE_ADDR"];
                }
                else
                {
                    var ipAddresses = ipAddress.Split(new [] {','}, StringSplitOptions.RemoveEmptyEntries);
                    if (ipAddresses.Length > 0)
                    {
                        ipAddress = ipAddresses[0];
                    }
                }

                ipAddress = String.IsNullOrWhiteSpace(ipAddress) ? context.Request.UserHostName : ipAddress;
            }
            return String.IsNullOrWhiteSpace(ipAddress) ? "0.0.0.0" : ipAddress;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...