IIS request.userHostAddress IPv6이 비활성화 된 경우에도 IPv6 (:: 1)을 반환합니다.

StackOverflow https://stackoverflow.com/questions/1932843

  •  20-09-2019
  •  | 
  •  

문제

Windows Server 2008의 네트워크 카드의 속성 섹션에는 IPv6이 비활성화되어 IPv4 만 활성화되었습니다.

그러나 asp.net에서 request.userhostaddress는 IPv6 주소 인 ':: 1'을 반환합니다.

누구든지 IPv4로 되돌아가는 방법을 알고 있습니까?

도움이 되었습니까?

해결책

LocalHost (:: 1 / 127.0.0.1)에 연결하는 경우 서버가 가지고있는 네트워크 카드가 아니라 Windows의 가상 카드와 유사합니다. 어쨌든 루프백 카드를 구성하고 IPv6을 제거 할 것이 없다고 생각하지 않습니다. 전체 시스템의 지원을 제거하지 않고도 Win2008에서는 더 이상 그렇게 할 수 없습니다.

네트워크 패킷을 캡처하는 UTIL을 실행하여 실제 카드가 사용되지 않는지 확인할 수 있습니다. Windows에서는 가상 루프백 카드를 걷는 트래픽을 스니핑 할 수 없습니다.

즉, 다른 기계에서 액세스하는 경우 (실제 카드를 통과하는 연결을 통해) IPv4 주소가 Request.UserHostAddress

다른 팁

Rolla 웹 사이트의 4 명에게는 솔루션이 있습니다 여기, 내 앱에서 사용한 것.

업데이트:

이 링크가 죽을 경우에만이 링크를 기반으로 코드가 있습니다.

public string GetIpAddress()
{
    string ipAddressString = HttpContext.Current.Request.UserHostAddress;

    if (ipAddressString == null)
        return null;

    IPAddress ipAddress;
    IPAddress.TryParse(ipAddressString, out ipAddress);

    // If we got an IPV6 address, then we need to ask the network for the IPV4 address 
    // This usually only happens when the browser is on the same machine as the server.
    if (ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)
    {
        ipAddress = System.Net.Dns.GetHostEntry(ipAddress).AddressList
            .First(x => x.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork);
    }

    return ipAddress.ToString();
}
  1. 시작으로 이동 -> 제어판을 클릭하십시오 -> 클릭하십시오. View network status and tasks 제어판 창에서 -> 클릭하십시오 change adapter settings 안에 Network and Sharing Center 창문.

  2. Network Connections 창이 나타납니다. 여기에서 마우스 오른쪽 버튼을 클릭하십시오 network adapter (무선 어댑터 또는 유선 이더넷 어댑터 일 수 있음) IPv6을 비활성화하고 클릭하려는 Properties.

  3. 에서 network adapter properties 창, untk Internet Protocol Version 6 (TCP/IPv6) 확인을 클릭하십시오.

  4. 유형 regedit Registry 편집기를 시작하는 명령 프롬프트에서 레지스트리 편집기에서 다음 레지스트리 항목을 찾으십시오.

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
    
  5. 만약 DisabledComponents 항목을 사용할 수 없으므로 편집 -> new-> dword (32 비트) 값으로 이동하여 다음 형식으로 작성하고 값을 설정해야합니다. 0xffffffff (그냥 타이핑 ffffffff). 이것은 IPv6 루프백 인터페이스를 제외한 모든 IPv6 기능을 비활성화하고 마지막으로 클릭합니다. OK.

  6. 컴퓨터를 다시 시작하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top