получение информации о пользователе из его http-запроса

#c# #.net #asp.net #httpwebrequest #httprequest

#c# #.net #asp.net #httpwebrequest #httprequest

Вопрос:

Q:

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

Когда я ищу, я нахожу, что:

  • REMOTE_HOST

    Имя хоста, который выполняет запрос. Если у сервера нет этой информации, он установит REMOTE_ADDR и оставит это значение пустым.

    Почему сервер может никогда не содержать имя хоста? и как я могу это исправить?

  • Я использую REMOTE_USER , LOGON_USER AUTH_USER для получения имени учетной записи, но оно также не содержит никаких данных

.

Ответ №1:

Вы можете использовать запрос.Объект ServerVariables, подобный

 // will return the host name making the request

    string s = Request.ServerVariables["REMOTE_HOST"] 


    // will return the computer name
    string s = Request.ServerVariables["SERVER_NAME"] 
  

Редактировать

Если вы хотите получить имя компьютера, попробуйте следующее

 string computer_name = System.Net.Dns.GetHostEntry(Request.ServerVariables["remote_addr"]).HostName;

    Response.Write(computer_name);
  

ПРАВКА II

// Получение сведений о клиентском компьютере

 System.Net.IPAddress[] strClientIPAddress = System.Net.Dns.GetHostAddresses(Environment.MachineName);
string strClientMachineName = Environment.MachineName.ToString().Trim();
string strClientUserName = Environment.UserName.ToString().Trim();
string strClientDomainName = Environment.UserDomainName.ToString().Trim();
string strClientOSVersion = Environment.OSVersion.ToString().Trim();
  

Для получения дополнительных переменных сервера перейдите по следующей ссылке

Переменные сервера IIS

Комментарии:

1. спасибо, но, первый дает мне 127.0.0.1 ,, второй дает мне localhost , в то время как имя моего компьютера: mm_h .

2. это потому, что я пробую эти методы локально или нет?

3. хммм System.Net.Dns.GetHostName() укажите имя сервера. Request.ServerVariables["REMOTE_HOST"] дайте мне ip-адрес. не имя хоста, я хочу получить имя хоста и учетную запись Windows в соответствии с запросом. Спасибо

4. @just_name: Это странно … дайте мне немного времени… Я ищу какое-то другое решение

5. @Just_name: Извините, я не могу найти никакого решения …. каждый орган предлагает код (который я предложил вам) с некоторым лекарством : (

Ответ №2:

попробуйте это

 System.Web.HttpContext.Current.Request.UserHostName;
System.Web.HttpContext.Current.Request.UserHostAddress;
  

Комментарии:

1. оба они получают ip-адрес, а не hostname .