2012-09-25 5 views
5

새 데이터 집합이 만들어지면 요청하는 컴퓨터의 호스트 이름을 데이터베이스에 저장해야합니다. 이 사실을 사용자에게 분명히 나타내려면 (사용자가 회사 내부에 있음) 사용자가 채우는 형식으로 세 개의 텍스트 상자로 표시합니다. 이 세 가지 텍스트 상자는 그런 식으로 작성됩니다ASP.NET Request.UserHostName에 호스트 이름이 포함되어 있지 않습니다.

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      txtHostname.Text = Request.UserHostName.ToString(); 
      txtIPAdress.Text = Request.UserHostAddress.ToString(); 
      txtWindowsLogin.Text = Request.LogonUserIdentity.Name.ToString(); 
     } 
    } 

내가 테스트 어떤 클라이언트 상관없이, Request.UserHostname의 호스트 이름을 제공해야하는 IP의 역방향 조회가 작동하지 않는 그러나, 필드가 충전되도록 IP 주소 서버에서 nslookup을 사용하면 정상적으로 작동합니다. 어디에서 시작할 수 있을지 알려주세요. 고마워요.

답변

3

이 작업을 수행하려면 configure IIS해야합니다. 반대로 하나의 지점에서만 필요하다면 Dns.GetHostEntry을 사용하여 역방향 조회를 수행 할 수 있습니다.

모든 요청에 ​​대한 역방향 조회는 성능에 심각한 영향을 줄 수 있으며, 이는 기본적으로 사용되지 않는 이유입니다. 가능한 경우 Dns.GetHostEntry 경로를 권하고 싶습니다. . 여기

우리가 사용하는 유용한 리버스 룩업 방식이다 :

public static string ReverseLookup(string ip) 
{ 
    if (string.IsNullOrEmpty(ip)) return ip; 

    try 
    { 
     return Dns.GetHostEntry(ip).Select(entry => entry.HostName).FirstOrDefault() ?? ip; 
    } 
    catch(SocketException) { return ip; } 
} 
+0

안녕하세요. @HackedByChinese, 링크를 이용해 주셔서 감사합니다. 정확히 맞았습니다. 테스트를 위해 IIS에 의한 역방향 조회를 활성화했지만 Dns.GetHostEntry를 사용하도록 응용 프로그램을 수정합니다. 귀하의 코드가 아주 좋아 보인다, 난 그냥 던져 ArgumentException '을 추가합니다 ip null 또는 비어 있습니다. 다시 한 번 감사드립니다. –

0

Page.Request.ServerVariables [ "HTTP_HOST"]의 ToUpper();

로드 균형 조정 응용 프로그램에서 호스트 이름 가져 오기를 사용할 수 있습니다.

관련 문제