Як отримати IP-адресу клієнта користувача в ASP.NET?


387

Ми повинні Request.UserHostAddressотримати IP-адресу в ASP.NET, але це зазвичай IP-адреса ISP користувача, а не точно IP-адреса машини користувача, яка, наприклад, натиснула посилання. Як я можу отримати реальну IP-адресу?

Наприклад, у профілі користувача Stack Overflow це: "Остання активність облікового запису: 4 години тому від 86.123.127.8" , але IP-адреса моєї машини дещо інша. Як Stack Overflow отримує цю адресу?

У деяких веб-системах є перевірка IP-адреси для деяких цілей. Наприклад, із певною IP-адресою, що кожні 24 години користувач може мати лише 5 клацань по посиланнях на завантаження? Ця IP-адреса повинна бути унікальною, а не для Інтернет-провайдерів, у яких є величезне коло клієнтів чи користувачів Інтернету.

Я добре зрозумів?


4
Зазвичай вони роблять те ж саме і не працюють правильно для спільних IP-адрес. У цій галузі можна зробити не багато.
Мехрдад Афшарі

Яку проблему ви намагаєтеся вирішити тут, чому ви вважаєте, що вам потрібна IP-адреса?
Стів

3
у мене є програма, яка перевіряє певні кліки посилання, і конкретний користувач (за IP) не може натискати посилання більше 5 разів на день. Проблема полягає в тому, що якщо Request.UserHostAddress призначений для кола користувачів під ISP або в мережі або конкретного користувача?
Мехді

Відповіді:


142

Як говорили інші, ви не можете робити те, що просите. Якщо ви описуєте проблему, яку ви намагаєтеся вирішити, можливо, хтось може допомогти?

Напр

  • ви намагаєтесь однозначно ідентифікувати своїх користувачів?
  • Чи можете ви використовувати cookie чи ідентифікатор сеансу, а не IP-адресу?

РедагуватиАдреса, яку ви бачите на сервері, не повинна бути адресою провайдера, як ви кажете, що це був би величезний діапазон. Адреса домашнього користувача на широкосмуговій мережі буде адресою на їх маршрутизаторі, тому кожен пристрій всередині будинку виявиться зовні, щоб бути однаковим, але маршрутизатор використовує NAT, щоб переконатися, що трафік спрямований на кожен пристрій правильно. Для користувачів, які звертаються з офісного середовища, адреса може бути однаковою для всіх користувачів. Сайти, які використовують ІР-адресу для ідентифікації, ризикують помилитися з нею - приклади, які ви наводите, є хорошими, і вони часто виходять з ладу. Наприклад, мій офіс знаходиться у Великобританії, точка зриву (де я "виявляється" в Інтернеті) знаходиться в іншій країні, де знаходиться наш основний ІТ-центр, тому в моєму офісі моя IP-адреса, здається, не знаходиться у Великобританії. З цієї причини я не можу отримати доступ до веб-вмісту лише у Великобританії, наприклад, BBC iPlayer). У будь-який момент часу в моїй компанії може з’явитися сотні, а то й тисячі людей, які, мабуть, мають доступ до Інтернету з тієї самої IP-адреси.

Коли ви пишете код сервера, ви ніколи не можете бути впевнені, на що посилається IP-адреса. Деяким користувачам це подобається саме так. Деякі люди навмисно використовують проксі або VPN, щоб ще більше вас бентежити.

Коли ви говорите, що ваша машина відрізняється від IP-адреси, показаної на StackOverflow, як ви дізнаєтесь адресу машини? Якщо ви просто шукаєте локальне використання ipconfigабо щось подібне, я б очікував, що це буде інакше з причин, які я виклав вище. Якщо ви хочете ще раз перевірити, що думає зовнішній світ, подивіться на whatismyipaddress.com/ .

Це посилання Вікіпедії на NAT надасть вам інформацію про це.


тому я зрозумів, що в серверних додатках ми не можемо бути впевнені в IP-адресі. це означає, що програмування на стороні клієнта - це рішення ?? ви маєте на увазі, наприклад, за допомогою деяких кодів JavaScript ми можемо це зробити ??
Мехді

11
НІ, це було б безглуздо, IP-адреса, яку клієнт "думає", буде внутрішньою для будинку чи офісу, вона буде безглуздою у зовнішньому світі. Наприклад, більшість домашніх маршрутизаторів роздають IP-адреси в діапазоні 192.168.1.xxx, тому тисячі машин мають однакову адресу у власних мережах.
Стів

12
Ні, це не унікально. Два користувачі позаду того ж маршрутизатора, що використовує NAT, матимуть однакову IP-адресу. Я дійсно думаю, що вам потрібно прочитати про це, дивіться посилання в моїй редакції.
Стів

1
То чому такі компанії, як AWS, Azure і т.д., використовують ip-адресу в правилах групи безпеки і дозволяють підключити до VM лише цю ip-адресу?

2
@ user5950947: Тому що Azure очікує, що ви будете компанією зі статичною загальнодоступною IP-адресою. Можна впевнено припустити, що ваша компанія завжди отримуватиме доступ зі своєї публічної IP-адреси, тому це приємна додаткова функція безпеки. Але IP-адреси можуть бути підробленими або ваша мережа може бути зламана, тому це ніколи не повинно бути єдиним захистом.
Deantwo

449

Часто вам хочеться дізнатися IP-адресу того, хто відвідує ваш веб-сайт. Хоча ASP.NET має кілька способів зробити це одним із найкращих способів, якими ми бачили, - використовуючи "HTTP_X_FORWARDED_FOR" колекції ServerVariables.

Ось чому ...

Іноді ваші відвідувачі стоять за проксі-сервером або маршрутизатором, а стандарт Request.UserHostAddressфіксує лише IP-адресу проксі-сервера або маршрутизатора. У такому випадку IP-адреса користувача зберігається у змінній сервері ("HTTP_X_FORWARDED_FOR").

Отже, що ми хочемо зробити, це спочатку перевірити "HTTP_X_FORWARDED_FOR", і якщо це порожньо, ми просто повертаємося ServerVariables("REMOTE_ADDR").

Хоча цей спосіб не є надійним, він може привести до кращих результатів. Нижче наведено код ASP.NET у VB.NET, узятий із публікації в блозі Джеймса Кроулі "Gotcha: HTTP_X_FORWARDED_FOR повертає кілька IP-адрес"

C #

protected string GetIPAddress()
{
    System.Web.HttpContext context = System.Web.HttpContext.Current; 
    string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

    if (!string.IsNullOrEmpty(ipAddress))
    {
        string[] addresses = ipAddress.Split(',');
        if (addresses.Length != 0)
        {
            return addresses[0];
        }
    }

    return context.Request.ServerVariables["REMOTE_ADDR"];
}

VB.NET

Public Shared Function GetIPAddress() As String
    Dim context As System.Web.HttpContext = System.Web.HttpContext.Current
    Dim sIPAddress As String = context.Request.ServerVariables("HTTP_X_FORWARDED_FOR")
    If String.IsNullOrEmpty(sIPAddress) Then
        Return context.Request.ServerVariables("REMOTE_ADDR")
    Else
        Dim ipArray As String() = sIPAddress.Split(New [Char]() {","c})
        Return ipArray(0)
    End If
End Function

24
Не використовуйте цей код з метою безпеки, оскільки будь-хто може підробити HTTP_X_FORWARDED_FOR або подібні заголовки. Тож якщо ви використовуєте це для ведення журналу безпеки або перевірок безпеки, зловмисник може його легко обійти.
д-р. зло

4
З вашого посилання, what we actually needed to be doing was take the last IP addressале ваш код отримує перший addresses[0]. Що правильно?
Нельсон Ротермель

4
@NelsonRothermel На основі en.wikipedia.org/wiki/X-Forwarded-For#Format, якщо ви хочете клієнт (а не попередній проксі), тоді використовуйте перший .
Річард

4
@ dr.evil Отже, що б ви запропонували замість цього? Тому що я хочу встановити доступ до послуг WCF за вказаними IP-адресами.
крипру

7
addresses.Length != 0не потрібно, оскільки це ніколи не може бути 0.
Джеймс Вілкінс

78

ОНОВЛЕННЯ: Дякую Бруно Лопесу. Якщо декілька ip-адрес можуть прийти, тоді потрібно використовувати цей метод:

    private string GetUserIP()
    {
        string ipList = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

        if (!string.IsNullOrEmpty(ipList))
        {
            return ipList.Split(',')[0];
        }

        return Request.ServerVariables["REMOTE_ADDR"];
    }

3
Як зазначено в іншій відповіді, HTTP_X_FORWARDED_FOR може бути списком IP-адрес, розділеним комами.
Бруно Лопес

У відповідь на функцію я просто отримую :: 1 кожен раз. Чи не можу я отримати повну IP-адресу ???
farhangdon

1
він повернеться: 1 на локальному хості. спробуйте це на продуктовому середовищі, і це повинно бути добре.
Бенні Маргаліт

1
@farhangdon, наступний код поверне ip адресу в локальному хості, як @Bat_Programmer писав нижчеSystem.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList[1].ToString();
Benny Margalit

НЕ робіть цього! Будьте обережні, щоб не просто використовувати першу IP-адресу в списку. Вам слід лише пропустити відомі IP-адреси проксі-серверів, починаючи з правого входу, щоб уникнути атаки між людиною та посередництвом.
Jpsy

24

Якщо c # бачити цей спосіб, дуже просто

string clientIp = (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? 
                   Request.ServerVariables["REMOTE_ADDR"]).Split(',')[0].Trim();

8
Якщо обидві серверні змінні можуть бути нульовими, це може кинути виняток.
Майкл Фрейджім

Що таке запит на посилання? I ServerVariables не знайдено
Brownbagger11

23

Що ще ви вважаєте IP-адресою користувача? Якщо ви хочете IP-адресу мережевого адаптера, боюся, у веб-додатку це неможливо зробити. Якщо ваш користувач відстає від NAT або інших матеріалів, ви також не можете отримати IP-адресу.

Оновлення : Хоча існують веб-сайти, які використовують IP для обмеження користувача (наприклад, rapidshare), вони не працюють належним чином у середовищах NAT.


22

Думаю, я повинен з усіма поділитися своїм досвідом. Добре, що я бачу в деяких ситуаціях REMOTE_ADDR НЕ отримає то, що ви шукаєте. Наприклад, якщо у вас за місцем події є балансир завантаження, і якщо ви намагаєтесь отримати клієнтську IP-адресу, то у вас виникнуть проблеми. Я перевірив це за допомогою мого програмного забезпечення для маскування IP, а також про те, щоб мої колеги були на різних континентах Тож ось моє рішення.

Коли я хочу знати IP-адресу клієнта, я намагаюся вибрати всі можливі докази, щоб я міг визначити, чи вони унікальні:

Тут я знайшов ще один sever-var, який може допомогти вам усім, якщо ви хочете отримати точний IP-адресу клієнтської сторони. тому я використовую: HTTP_X_CLUSTER_CLIENT_IP

HTTP_X_CLUSTER_CLIENT_IP завжди отримує точний IP-адресу клієнта. У будь-якому випадку, якщо він не дає вам значення, то слід шукати HTTP_X_FORWARDED_FOR, оскільки це другий найкращий кандидат, який отримає вам клієнтський IP, а потім REMOTE_ADDR var, який може або не може повернути вам IP, але мені, маючи все це три - це те, що мені найкраще контролювати.

Я сподіваюся, що це допоможе деяким хлопцям.


Слід сказати, що заголовки http_x _... можна легко підробити щодо змінної remote_addr. І тому remote_addr залишається найнадійнішим джерелом для ip-адреси клієнта.
Ciro Corvino

1
@CiroCorvino ви маєте рацію, але коли у вас розміщений ваш веб-сайт на сервері, який працює за балансиром завантаження (як я вже згадував у своєму дописі), то remote_addr не зможе дати вам IP, який ви шукаєте. Я пережив те, що ви говорите, але коли я закопав у рішення, те, що я заявив, найкраще працює для мене.
KMX

На жаль, @KMX, фактично я також використовую комбінацію remote_addr та http_x_forwarded, щоб зробити деякі припущення щодо походження запиту. Якщо ви редагуєте свою публікацію, я
Ciro

15

Ви можете використовувати:

System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList.GetValue(0).ToString();

1
дякую, для мене це єдиний метод, який справді повертає мій IP на локальному хості.
Бенні Маргаліт

Насправді те, що я використав для отримання ip-адреси місцевого господаря,System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList[1].ToString();
Benny Margalit,

1
Цей код працює лише для мене, і я можу отримати IPv6 та IPv4 за допомогою GetValue (0) та GetValue (1) відповідно. Дякуємо!
Радж Барал

Однак я отримую помилку під час виконання цього в скрипці Request for the permission of type 'System.Net.DnsPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
vibs2006,

ОП запитує, як отримати IP віддаленого веб-користувача, а не адресу його локального господаря.
t.durden

13

IP адреси є частиною мережевого рівня в "семишаровому стеку". Мережевий рівень може робити все, що завгодно, з IP-адресою. Ось що відбувається з проксі-сервером, NAT, ретрансляцією чи будь-яким іншим.

Рівень програми ні в якому разі не повинен залежати від IP-адреси. Зокрема, IP-адреса не повинна бути ідентифікатором нічого іншого, крім ідентифікатора одного кінця мережевого з'єднання. Як тільки з'єднання буде закрито, слід очікувати зміни IP-адреси (того ж користувача).


1
Це все добре і добре, але що ви робите, коли один клієнт системи багатоорендарів вимагає, щоб акаунти користувачів могли увійти лише з вказаної IP-адреси?
Ронні Овербі

1
Потім вони повинні повідомити вам, яку IP-адресу бачитиме ваш сервер. Якщо їм потрібно мати конкретну адресу, вони не зможуть опинитися за NAT або подібним.
Джон Сондерс

@RonnieOverby Я в тій же ситуації. Мені потрібно знати, з якого IP-адреси вони підключаються, і це має бути в моєму списку. Тоді додаток може вмикати або вимикати певні функціональні можливості на основі їх IP-адреси. Це те, чого хоче замовник.
t.durden

10

Усі відповіді, що наразі враховують нестандартний, але дуже поширений X-Forwarded-Forзаголовок. Є стандартизований Forwardedзаголовок, який трохи складніше розібрати. Деякі приклади:

Forwarded: for="_gazonk"
Forwarded: For="[2001:db8:cafe::17]:4711"
Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43
Forwarded: for=192.0.2.43, for=198.51.100.17

Я написав клас, який враховує обидва ці заголовки при визначенні IP-адреси клієнта.

using System;
using System.Web;

namespace Util
{
    public static class IP
    {
        public static string GetIPAddress()
        {
            return GetIPAddress(new HttpRequestWrapper(HttpContext.Current.Request));
        }

        internal static string GetIPAddress(HttpRequestBase request)
        {
            // handle standardized 'Forwarded' header
            string forwarded = request.Headers["Forwarded"];
            if (!String.IsNullOrEmpty(forwarded))
            {
                foreach (string segment in forwarded.Split(',')[0].Split(';'))
                {
                    string[] pair = segment.Trim().Split('=');
                    if (pair.Length == 2 && pair[0].Equals("for", StringComparison.OrdinalIgnoreCase))
                    {
                        string ip = pair[1].Trim('"');

                        // IPv6 addresses are always enclosed in square brackets
                        int left = ip.IndexOf('['), right = ip.IndexOf(']');
                        if (left == 0 && right > 0)
                        {
                            return ip.Substring(1, right - 1);
                        }

                        // strip port of IPv4 addresses
                        int colon = ip.IndexOf(':');
                        if (colon != -1)
                        {
                            return ip.Substring(0, colon);
                        }

                        // this will return IPv4, "unknown", and obfuscated addresses
                        return ip;
                    }
                }
            }

            // handle non-standardized 'X-Forwarded-For' header
            string xForwardedFor = request.Headers["X-Forwarded-For"];
            if (!String.IsNullOrEmpty(xForwardedFor))
            {
                return xForwardedFor.Split(',')[0];
            }

            return request.UserHostAddress;
        }
    }
}

Нижче наведено декілька одиничних тестів, які я використав для перевірки свого рішення:

using System.Collections.Specialized;
using System.Web;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UtilTests
{
    [TestClass]
    public class IPTests
    {
        [TestMethod]
        public void TestForwardedObfuscated()
        {
            var request = new HttpRequestMock("for=\"_gazonk\"");
            Assert.AreEqual("_gazonk", Util.IP.GetIPAddress(request));
        }

        [TestMethod]
        public void TestForwardedIPv6()
        {
            var request = new HttpRequestMock("For=\"[2001:db8:cafe::17]:4711\"");
            Assert.AreEqual("2001:db8:cafe::17", Util.IP.GetIPAddress(request));
        }

        [TestMethod]
        public void TestForwardedIPv4()
        {
            var request = new HttpRequestMock("for=192.0.2.60;proto=http;by=203.0.113.43");
            Assert.AreEqual("192.0.2.60", Util.IP.GetIPAddress(request));
        }

        [TestMethod]
        public void TestForwardedIPv4WithPort()
        {
            var request = new HttpRequestMock("for=192.0.2.60:443;proto=http;by=203.0.113.43");
            Assert.AreEqual("192.0.2.60", Util.IP.GetIPAddress(request));
        }

        [TestMethod]
        public void TestForwardedMultiple()
        {
            var request = new HttpRequestMock("for=192.0.2.43, for=198.51.100.17");
            Assert.AreEqual("192.0.2.43", Util.IP.GetIPAddress(request));
        }
    }

    public class HttpRequestMock : HttpRequestBase
    {
        private NameValueCollection headers = new NameValueCollection();

        public HttpRequestMock(string forwarded)
        {
            headers["Forwarded"] = forwarded;
        }

        public override NameValueCollection Headers
        {
            get { return this.headers; }
        }
    }
}

9

Якщо ви використовуєте CloudFlare, ви можете спробувати цей метод розширення :

public static class IPhelper
{
    public static string GetIPAddress(this HttpRequest Request)
    {
        if (Request.Headers["CF-CONNECTING-IP"] != null) return Request.Headers["CF-CONNECTING-IP"].ToString();

        if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null) return Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();

        return Request.UserHostAddress;
    }
}

тоді

string IPAddress = Request.GetIPAddress();

А використовуючи F5 або Palo Alto?
Кікенет

8
string IP = HttpContext.Current.Request.Params["HTTP_CLIENT_IP"] ?? HttpContext.Current.Request.UserHostAddress;

7

Що ви можете зробити, це зберегти IP маршрутизатора вашого користувача, а також перенаправлений IP та спробувати зробити його надійним, використовуючи як IP-адреси [Зовнішні, так і внутрішні приватні]. Але знову через кілька днів клієнту може бути призначений новий внутрішній IP від ​​маршрутизатора, але він буде більш надійним.


5

Поєднуючи відповіді від @Tony та @mangokun , я створив такий метод розширення:

public static class RequestExtensions
{
    public static string GetIPAddress(this HttpRequest Request)
    {
        if (Request.Headers["CF-CONNECTING-IP"] != null) return Request.Headers["CF-CONNECTING-IP"].ToString();

        if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
        {
            string ipAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

            if (!string.IsNullOrEmpty(ipAddress))
            {
                string[] addresses = ipAddress.Split(',');
                if (addresses.Length != 0)
                {
                    return addresses[0];
                }
            }
        }

        return Request.UserHostAddress;
    }
}

Для чого ви використовуєте, HTTP_X_FORWARDED_FORале ні X_FORWARDED_FOR? Вони однакові?
Ігор Яловий

3

використання у файлі ashx

public string getIP(HttpContext c)
{
    string ips = c.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    if (!string.IsNullOrEmpty(ips))
    {
        return ips.Split(',')[0];
    }
    return c.Request.ServerVariables["REMOTE_ADDR"];
}

2
public static class Utility
{
    public static string GetClientIP(this System.Web.UI.Page page)
    {
        string _ipList = page.Request.Headers["CF-CONNECTING-IP"].ToString();
        if (!string.IsNullOrWhiteSpace(_ipList))
        {
            return _ipList.Split(',')[0].Trim();
        }
        else
        {
            _ipList = page.Request.ServerVariables["HTTP_X_CLUSTER_CLIENT_IP"];
            if (!string.IsNullOrWhiteSpace(_ipList))
            {
                return _ipList.Split(',')[0].Trim();
            }
            else
            {
                _ipList = page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                if (!string.IsNullOrWhiteSpace(_ipList))
                {
                    return _ipList.Split(',')[0].Trim();
                }
                else
                {
                    return page.Request.ServerVariables["REMOTE_ADDR"].ToString().Trim();
                }
            }
        }
    }
}

Використання;

string _ip = this.GetClientIP();

0

Це легко. Спробуйте:

var remoteIpAddress = Request.HttpContext.Connection.RemoteIpAddress;

тільки це :))


1
FYI, наведений вище код працює лише в Asp.Net Core, а не в звичайному посиланні
Dobin

-1

Привіт, хлопці. Більшість кодів, які ви знайдете, повернуть вам ip-адресу сервера, а не ip-адресу клієнта. Однак цей код повертає правильну ip-адресу клієнта. Спробуйте. Для отримання додаткової інформації просто перевірте це

https://www.youtube.com/watch?v=Nkf37DsxYjI

для отримання вашої локальної ip-адреси за допомогою javascript ви можете використати цей код у вашому тезі сценарію

<script>
    var RTCPeerConnection = /*window.RTCPeerConnection ||*/
     window.webkitRTCPeerConnection || window.mozRTCPeerConnection;

         if (RTCPeerConnection) (function () {
             var rtc = new RTCPeerConnection({ iceServers: [] });
             if (1 || window.mozRTCPeerConnection) {      
                 rtc.createDataChannel('', { reliable: false });
             };

             rtc.onicecandidate = function (evt) {

                 if (evt.candidate)
                     grepSDP("a=" + evt.candidate.candidate);
             };
             rtc.createOffer(function (offerDesc) {
                 grepSDP(offerDesc.sdp);
                 rtc.setLocalDescription(offerDesc);
             }, function (e) { console.warn("offer failed", e); });


             var addrs = Object.create(null);
             addrs["0.0.0.0"] = false;
             function updateDisplay(newAddr) {
                 if (newAddr in addrs) return;
                 else addrs[newAddr] = true;
                 var displayAddrs = Object.keys(addrs).filter(function
(k) { return addrs[k]; });
                 document.getElementById('list').textContent =
displayAddrs.join(" or perhaps ") || "n/a";
             }

             function grepSDP(sdp) {
                 var hosts = [];
                 sdp.split('\r\n').forEach(function (line) { 
                     if (~line.indexOf("a=candidate")) {   
                         var parts = line.split(' '),   
                             addr = parts[4],
                             type = parts[7];
                         if (type === 'host') updateDisplay(addr);
                     } else if (~line.indexOf("c=")) {      
                         var parts = line.split(' '),
                             addr = parts[2];
                         updateDisplay(addr);
                     }
                 });
             }
         })(); else
         {
             document.getElementById('list').innerHTML = "<code>ifconfig| grep inet | grep -v inet6 | cut -d\" \" -f2 | tail -n1</code>";
             document.getElementById('list').nextSibling.textContent = "In Chrome and Firefox your IP should display automatically, by the power of WebRTCskull.";

         }




</script>
<body>
<div id="list"></div>
</body>

а для отримання вашої загальнодоступної ip-адреси ви можете використати цей код у вашому тезі сценарію

  function getIP(json) {
    document.write("My public IP address is: ", json.ip);
  }


<script type="application/javascript" src="https://api.ipify.org?format=jsonp&callback=getIP"></script>


-7

Спробуйте:

using System.Net;

public static string GetIpAddress()  // Get IP Address
{
    string ip = "";     
    IPHostEntry ipEntry = Dns.GetHostEntry(GetCompCode());
    IPAddress[] addr = ipEntry.AddressList;
    ip = addr[2].ToString();
    return ip;
}
public static string GetCompCode()  // Get Computer Name
{   
    string strHostName = "";
    strHostName = Dns.GetHostName();
    return strHostName;
}

Це повертає ip адресу сервера
Sreekumar P

Йдеться про asp.net - веб-додаток, який працює на сервері, а не на комп'ютері користувачів.
doekman
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.