2014-04-28 15 views

Odpowiedz

3

Spróbuj użyć następującego kodu

System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
+0

Witam @Neel Użyłem wyżej wspomnianego kodu, ale otrzymuję pusty tekst ... Czy spotkałeś się już z tym? Jakaś pomoc? –

+0

Będę musiał sprawdzić – Neel

4

w zależności od miejsca jesteś.

Kontroler:

ControllerContext.HttpContext.Request.UserHostAddress; 

Razor Widok:

@Request.UserHostAddress 

Model:

Nie używaj System.Web.HttpContext ponieważ jest to bardzo trudne, jeśli nie niemożliwe do testów jednostkowych. Zamiast tego podaj wartość za pośrednictwem kontrolera.

Html Helper:

public static MvcHtmlString Ip(this HtmlHelper html) 
{ 
    string html = html.ViewContext.RequestContext.HttpContext.Request.UserHostAddress; 
    return MvcHtmlString.Create(html); 
} 

Pamiętaj, ze względu na prostotę przykładach, nie robić żadnych zerowej kontroli.

+0

Iam hosting mojej witryny na serwerze, Za pomocą tego kodu otrzymuję tylko ten adres IP serwera. Ale chcę adresu IP użytkownika – shan

+0

To już nie jest prawdą w ASP.NET 5 [Core 1.0 (vnext)] :( – ppumkin

+0

@ppumkin Dziękuję za heads up.Również muszę wypowiedzieć moją własną odpowiedź, że System.Web.HttpContext jest w rzeczywistości jest łatwy do przetestowania za pomocą Microsoft Fakes, który jest dostarczany z VS Premium i nowszym, ale nie zmienię odpowiedzi, ponieważ nadal uważam, że ważne jest, aby trzymać się z daleka. Zwłaszcza z vNext, który zrywa więzy z System.Web. –

Powiązane problemy