Nasıl müşteri'ASP.NET MVC IP adresi alabilir miyim?
Yığın mvc ASP.NET tamamen yeniyim ve basit Sayfa nesnenin ne olduğunu ve ServerVariables nesnesi İsteği merak ediyorum?
Temel olarak yapmak istediğim şey, istemci bilgisayarın IP adresini çıkarmak için, ama mevcut MVC yapısı, tüm bunlar nasıl değişti anlamıyorum.
Anladığım kadarıyla most of the variable objects has been replaced by the HttpRequest variants?
Herkes bazı kaynakları paylaşmak ister misin? ASP.NET MVC dünyada öğrenmek şeyler, gerçekten deniz gibi. :)
Örneğin bu akım fonksiyonu ile statik Dersim var. Nasıl aynı sonucu ASP.NET MVC kullanarak alabilirim?
public static int getCountry(Page page)
{
return getCountryFromIP(getIPAddress(page));
}
public static string getIPAddress(Page page)
{
string szRemoteAddr = page.Request.ServerVariables["REMOTE_ADDR"];
string szXForwardedFor = page.Request.ServerVariables["X_FORWARDED_FOR"];
string szIP = "";
if (szXForwardedFor == null)
{
szIP = szRemoteAddr;
}
else
{
szIP = szXForwardedFor;
if (szIP.IndexOf(",") > 0)
{
string [] arIPs = szIP.Split(',');
foreach (string item in arIPs)
{
if (!isPrivateIP(item))
{
return item;
}
}
}
}
return szIP;
}
Ve nasıl kumanda sayfasında bu işlev çağrısı mı?
CEVAP
Basit cevap HttpRequest.UserHostAddress property kullanmaktır.
Örnek:Bir Denetleyici içinde
using System;
using System.Web.Mvc;
namespace Mvc.Controllers
{
public class HomeController : ClientController
{
public ActionResult Index()
{
string ip = Request.UserHostAddress;
...
}
}
}
Örnek:Bir yardımcı sınıf içinde:
using System.Web;
namespace Mvc.Helpers
{
public static class HelperClass
{
public static string GetIPHelper()
{
string ip = HttpContext.Current.Request.UserHostAddress;
..
}
}
}
AMA,eğer isteğini bir ya da daha fazla tarafından kabul edilmiştir, proxy servers sonra IP adresini HttpRequest.UserHostAddress property tarafından iade isteğini iletti geçen vekil sunucunun IP adresi olacaktır.
Proxy sunucularıOLABİLİRkullanımıde factoX-Forwarded-For HTTP üstbilgi, istemcinin IP adresini yerleştirerek standart. Bir istek olduğunu garanti diye bir şey yok dışında X-forward-bir başlık, ayrıca X-forward-SPOOFED henüz garantisi yok.
Orijinal Cevap
Request.UserHostAddress
Yukarıdaki kodu bir koleksiyon ararken başvurmadan, İstemcinin IP adresi sağlar. İstek emlak Kontrolörleri (veya Görünümler) içinde kullanılabilir. Bu nedenle fonksiyon için bir Sayfa sınıf geçme yerine bir İstek nesnesi aynı sonucu elde etmek için geçiş yapabilirsiniz:
public static string getIPAddress(HttpRequestBase request)
{
string szRemoteAddr = request.UserHostAddress;
string szXForwardedFor = request.ServerVariables["X_FORWARDED_FOR"];
string szIP = "";
if (szXForwardedFor == null)
{
szIP = szRemoteAddr;
}
else
{
szIP = szXForwardedFor;
if (szIP.IndexOf(",") > 0)
{
string [] arIPs = szIP.Split(',');
foreach (string item in arIPs)
{
if (!isPrivateIP(item))
{
return item;
}
}
}
}
return szIP;
}
Nasıl YouTube API YouTube video küçük ...
Nasıl JavaScript para olarak format nu...
Nasıl bir dize dönüştürmek için yığın ...
Nasıl kalıcı olarak Kişisel satır numa...
Nasıl, asenkron yerine senkron AJAX is...