Как получить клиентский IP-адрес в статическом классе в asp.net mvc
Я хочу получить ip-адрес клиента в static class в asp.net mvc 3.
Но я не могу получить доступ к объекту запроса в статическом классе.
может ли кто-нибудь помочь, как получить ip-адрес без объекта запроса в статическом классе?
Ответ 1
Вы можете получить IP-адрес пользователя в статическом классе следующим образом:
string ip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(ip))
{
ip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
return ip;
В этом методе лучше использовать этот Request.UserHostAddress(), поскольку иногда он будет захватывать только IP-адрес пользовательского прокси.
Ответ 2
вы можете передать HttpContext.Current по параметру контроллера в StaticClass, но это плохая практика.
Лучшая практика заключается в том, что конструктор Controller получает интерфейс класса реализации.