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

  • Jeremy Gallman

    Jeremy Gallm

    11 NİSAN 2012
  • Mr. H

    Mr. H

    1 Temmuz 2012
  • MyTiredBones

    MyTiredBones

    2 Temmuz 2013