Apakah cara untuk mendapatkan alamat IP pelanggan dalam ASP.NET MVC?
P粉232409069
P粉232409069 2023-10-14 09:01:56
0
2
476

Saya benar-benar baharu dengan timbunan ASP.NET MVC dan saya ingin tahu apa yang berlaku dengan objek Halaman mudah dan objek Request ServerVariables?

Pada asasnya, saya ingin mengekstrak alamat IP PC pelanggan, tetapi saya tidak dapat memahami bagaimana struktur MVC semasa mengubahnya.

Setahu saya, kebanyakan objek berubah telah digantikan dengan varian HttpRequest.

Adakah sesiapa yang sudi berkongsi beberapa sumber? Terdapat jumlah yang besar untuk dipelajari dalam dunia ASP.NET MVC. :)

Sebagai contoh, saya mempunyai kelas statik dengan fungsi semasa. Bagaimanakah saya boleh mencapai hasil yang sama menggunakan ASP.NET MVC?

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

Bagaimana untuk memanggil fungsi ini dari halaman pengawal?

P粉232409069
P粉232409069

membalas semua (2)
P粉826283529

Request.ServerVariables["REMOTE_ADDR"]Harus berfungsi - terus dalam paparan atau dalam badan kaedah tindakan pengawal (Permintaan ialah hak milik kelas Pengawal dalam MVC, bukan Halaman). p>

Ia berfungsi..tetapi anda perlu menerbitkan pada IIS sebenar bukan IIS maya.

    P粉903969231

    Jawapan mudah ialah menggunakan sifatHttpRequest.UserHostAddress.

    Contoh:Dari dalam pengawal:

    using System; using System.Web.Mvc; namespace Mvc.Controllers { public class HomeController : ClientController { public ActionResult Index() { string ip = Request.UserHostAddress; ... } } }

    Contoh:Dari kelas pembantu:

    using System.Web; namespace Mvc.Helpers { public static class HelperClass { public static string GetIPHelper() { string ip = HttpContext.Current.Request.UserHostAddress; .. } } }

    Walau bagaimanapun,jika permintaan telah dihantar oleh satu atau lebihpelayan proksi传递> maka sifat alamat IP dikembalikan olehHttpRequest.UserHostAddressakan menjadi alamat IP pelayan proksi terakhir yang menyampaikan permintaan itu.

    Pelayan proksibolehmenggunakan standardde factodengan meletakkan alamat IP pelanggan dalam pengepala HTTPX-Forwarded-For. Selain tiada jaminan bahawa permintaan itu mempunyai pengepala X-Forwarded-For, juga tiada jaminan bahawa X-Forwarded-For belumspoofed.


    Jawapan asal

    Request.UserHostAddress

    Kod di atas menyediakan alamat IP pelanggan tanpa perlu mencari koleksi. Harta Permintaan tersedia dalam pengawal (atau paparan). Jadi, daripada menghantar kelas Halaman ke fungsi anda, anda boleh menghantar objek Permintaan untuk mendapatkan hasil yang sama:

    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; }
      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!