Asp.NET MVC İle Kullanıcının IP Adresini Alma
Merhaba,
İçeriğimizin başlığında her ne kadar Asp.NET MVC’ye değinilmiş olunsada aslında Asp.NET Web Forms mimarisinde de uygulayabileceğiniz bir kod demecinden bahsedeceğim.
Aşağıda vermiş olduğum kod bloğundaki yapı sayesinde ilgili kullanıcının doğruluk payı en yüksek olan IP adresini elde edebilirsiniz. Koda göz atarsanız eğer göreceksiniz ki “Load Balancer-Yük Dengeleme” yahut yönlendirme gibi olası durumları göze alarak belirli kontroller sağlanıp en doğru IP adresi elde edilmeye çalışılmıştır.
public static string GetClientIp() { var ipAddress = string.Empty; if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null) ipAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); else if (HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"] != null && HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"].Length != 0) ipAddress = HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"]; else if (HttpContext.Current.Request.UserHostAddress.Length != 0) ipAddress = HttpContext.Current.Request.UserHostName; return ipAddress; }
Sevgiler…
İyi çalışmalar…
MVC proje altında Models altında yaratmış oldugum code pagede ilgili referansları vermemem ragmen HttpRequest.Current de hatta veriyor kısaca referans istiyor fakat Nuget packte yanlızca .NetCore da bir referans bulabildim
Sıkıntı şu ki; onca yoğunluğun içinde birde sizin şu karman çorman derdinizi idrak etmeye çalışıp, ek olarak derman bulmaya da enerji harcamamı beklemenizdir. Derdinizi doğru düzgün izah etseniz ben yardımcı olmaya açığım ama çok kapalısınız. Bu dar anlatımdan beklentiniz nedir merak ediyorum! Karşı taraftan yardım istiyorsanız önce derdinizle ilgili karşı tarafa yardımcı olunuz. Ne alınan bir hata mesajı paylaşmıssınız ne de bu bahsettiklerinizden hangi konuda yardım istediğinizi belirtmişsiniz.
Bu yorumumu ister yayınlayın, ister yayınlamayın. Fakat çözümü arkadaşa ve diger bu bloga girip bu konuya bakan arkadaşlara paylaşınız.
Önce insanlar ile üslubunuza dikkat edin. Bu konuyu araştırırken bu blog ile karşılaştım. Bir soruya karşı böyle bir tavırlı mesaj yazacaksanız, size blogunuzu kapatmanızı öneririm.
Lafı uzatmadan arkadaş gayet haklıdır. Mvc yazmışınız başlıkta fakat Bu kodun mvc de çalışma ihtimali yoktur. Sınıf farklılıklarından. Size daha pratik, daha kısa, akılda kalıcı kodu vereyim.
HttpContext sınıfı C# asp.net de System.Web sınıfı ile gelmektedir. Mvc de bu sınıfıın kullanımı farklılık göstermektedir.
System.Web.HttpContext.Current.Request.UserHostAddress kodu direk size mvc de de c#da da kullanıcının ipsini vermektedir. Fakat bunu ana makinada çalıştırırsanız :::1 gibi bir sonuç döndürür. Sıkıntı değil. Ana makine dışından başka bir makine ile siteye girdiginizde ip adresi elinize geçmektedir.
Altay bey, UserHostAddress her zaman gerçek IP adresini vermez. Biraz araştırmanızı ve ondan sonra bu kadar emin bir şekilde cevap yazmanızı öneririm.
Sayın hocam .net6 da aşağıdaki gibi yapıyorum fakat bütün ip adresleri aynı geliyor. Sunucuda dockerda çalışıyor apimiz. sanırım kullanıcının değil de react ile yazdığımız uygulamanın sunucusunun ip sini alıyor.
Yukardakini .net6 ile nasıl yapabiliriz. Teşekkür ederim.