SORU
5 NİSAN 2010, PAZARTESİ


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
8 EYLÜL 2011, PERŞEMBE


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;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lancome USA

    Lancome USA

    30 HAZİRAN 2009
  • Michelle Phan

    Michelle Pha

    18 Temmuz 2006
  • wowchick16

    wowchick16

    17 Mart 2007