IIS request.userHostAddress IPv6이 비활성화 된 경우에도 IPv6 (:: 1)을 반환합니다.
문제
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();
}
시작으로 이동 -> 제어판을 클릭하십시오 -> 클릭하십시오.
View network status and tasks
제어판 창에서 -> 클릭하십시오change adapter settings
안에Network and Sharing Center
창문.Network Connections
창이 나타납니다. 여기에서 마우스 오른쪽 버튼을 클릭하십시오network adapter
(무선 어댑터 또는 유선 이더넷 어댑터 일 수 있음) IPv6을 비활성화하고 클릭하려는Properties
.에서
network adapter properties
창, untkInternet Protocol Version 6 (TCP/IPv6)
확인을 클릭하십시오.유형
regedit
Registry 편집기를 시작하는 명령 프롬프트에서 레지스트리 편집기에서 다음 레지스트리 항목을 찾으십시오.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
만약
DisabledComponents
항목을 사용할 수 없으므로 편집 -> new-> dword (32 비트) 값으로 이동하여 다음 형식으로 작성하고 값을 설정해야합니다.0xffffffff
(그냥 타이핑ffffffff
). 이것은 IPv6 루프백 인터페이스를 제외한 모든 IPv6 기능을 비활성화하고 마지막으로 클릭합니다.OK
.컴퓨터를 다시 시작하십시오.