Как получить IP-адрес вызывающего абонента в WebMethod?
[WebMethod]
public void Foo()
{
// HttpRequest... ? - Not giving me any options through intellisense...
}
с использованием С# и ASP.NET
Как получить IP-адрес вызывающего абонента в WebMethod?
[WebMethod]
public void Foo()
{
// HttpRequest... ? - Not giving me any options through intellisense...
}
с использованием С# и ASP.NET
HttpContext.Current.Request.UserHostAddress - это то, что вы хотите.
Просто осторожно. IP-адреса не могут использоваться для уникальной идентификации клиентов. NAT-брандмауэры и корпоративные прокси-серверы повсюду и скрывают многих пользователей за одним IP-адресом.
Try:
Context.Request.UserHostAddress
Попробуйте следующее:
string ipAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
Не пробовал в webMethod, но я использую его в стандартных HttpRequests
HttpContext фактически доступен внутри базового класса WebService
, поэтому просто используйте Context.Request
(или HttpContext.Current
, который также указывает на текущий контекст), чтобы получить доступ к членам, предоставленным HttpRequest
.
Я выполнил следующую функцию:
static public string sGetIP()
{
try
{
string functionReturnValue = null;
String oRequestHttp =
WebOperationContext.Current.IncomingRequest.Headers["User-Host-Address"];
if (string.IsNullOrEmpty(oRequestHttp))
{
OperationContext context = OperationContext.Current;
MessageProperties prop = context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpoint =
prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
oRequestHttp = endpoint.Address;
}
return functionReturnValue;
}
catch (Exception ex)
{
return "unknown IP";
}
}
Эта работа выполняется только в Интранете, если у вас есть прокси или natting, вы должны изучить, если исходный IP-адрес перемещается где-то еще в http-пакете.