2015-11-30 2 views
3

Im пытается получить ServerVariables ["REMOTE_ADDR"] в asp.net.Доступ к IP-адресу клиента (REMOTE_ADDR) в Asp.Net 5

это мой старый код (WebAPI 2):

private Logn GLog(System.Web.Routing.RequestContext requestContext) 
{ 
    Ln Log = new LogInformation(); 
    Lg.IP = requestContext.HttpContext.Request.ServerVariables["REMOTE_ADDR"]; 
    Lg.RemoteIP = requestContext.HttpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
    ............................ 

из Что я узнал, они изменили "Routing.RequestContext" в

"IHttpContextAccessor" в vNext версии.

Как я могу достичь результата с IHttpContextAccessor?

это дало мне ошибку "ServerVariables" часть:

private Logn GLog(IHttpContextAccessor requestContext) 
{ 
    Ln Log = new LogInformation(); 
    Lg.IP = requestContext.HttpContext.Request.ServerVariables["REMOTE_ADDR"]; 
} 

ответ

5

Вы должны использовать ConnectionInfo.RemoteIpAddress вместо:

private Logn GLog(IHttpContextAccessor contextAccessor) 
{ 
    Ln Log = new LogInformation(); 
    Lg.IP = contextAccessor.HttpContext.Connection.RemoteIpAddress.ToString(); 

    // ... 
} 
+0

Спасибо для answer.Is Есть ли шанс найти "HTTP_X_FORWARDED_FOR" замена тоже? –

+1

Вы проверили 'contextAccessor.HttpContext.Request.Headers'? Это не логически связано, но я видел некоторые коды в прошлом, которые его используют. – haim770

+0

Решает ли это проблему, когда RemoteIpAddress имеет значение NULL в производстве IIS? – kernowcode

Смежные вопросы