Как узнать имя компьютера клиента, используя asp.net mvc? - PullRequest
0 голосов
/ 30 января 2019

Я поддерживаю систему, которая должна получить имя компьютера клиента. Я пробую разные коды, но все они просто получают имя компьютера хост-сервера, а не имя компьютера клиента.Вот фрагмент:

 public void CreateEvents(string className, string eventName, string eventData, string userId)
    {
        string hostName = Dns.GetHostName(); // Retrive the Name of HOST  
        string compname= HttpContext.Current.Request.UserHostAddress;


        var browser = HttpContext.Current.Request.Browser.Browser + " " + HttpContext.Current.Request.Browser.Version;

        if (string.IsNullOrEmpty(userId))
        {
            userId = compname;
        }

        var entity = new EventLog
        {
            ClassName = className,
            EventName = eventName,
            EventData = eventData,
            IpAddress = ipAddress,
            Browser = browser,
            UserId = userId,
            CreatedDate = DateTime.Now
        };

        _db.EventLogs.Add(entity);
        _db.SaveChanges();
    }

    public string GetIpAddress()
    {
       HttpContext context = System.Web.HttpContext.Current;
        string compname=    context.Request.UserHostAddress; //System.Net.Dns.GetHostName();
        return compname;
    }

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 30 января 2019

Нет, вы не можете , если только клиент не отправляет такую ​​информацию при выполнении HTTP-запросов.Под «клиентом» я имею в виду any - какое-то приложение, браузер и т. Д.

Вы можете проверить свой собственный поток запросов браузера, используя стандартные инструменты разработчика браузера, и точно увидеть какую информацию отправляет ваш браузер.У него не будет имени вашего компьютера (если на вашем компьютере что-то не так, и это, вероятно, будет проблемой).

При этом Данные заголовка HTTP - это то, что у вас есть помимо стандартной сетевой информации например, IP-адрес (который также не обязательно является IP-адресом клиента - это может быть сетевой адрес клиента).Самое близкое, что вы можете получить, это hostname, если он существует, и даже тогда, точно так же, как и IP-адрес, не гарантируется, что это имя компьютера.

Возможное исключение будет во внутренней сети (LAN).

0 голосов
/ 30 января 2019

вы можете использовать HttpContext.Request.UserHostAddress для получения IP-адреса, также у Request есть UserHostName, но я не уверен насчет этого свойства

0 голосов
/ 30 января 2019

Вы можете получить имя компьютера следующим образом:

Environment.MachineName.ToString()

Вы можете получить имя хост-сервера следующим образом:

Server.MachineName.ToString()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...