В разделе свойств моей сетевой карты на сервере Windows 2008 я отключил IPV6, оставив только IPV4.
Однако в ASP.NET Request.UserHostAddress возвращает ":: 1", адрес IPV6.
Кто-нибудь понял, как вернуться к IPV4?
В разделе свойств моей сетевой карты на сервере Windows 2008 я отключил IPV6, оставив только IPV4.
Однако в ASP.NET Request.UserHostAddress возвращает ":: 1", адрес IPV6.
Кто-нибудь понял, как вернуться к IPV4?
Если вы подключаетесь к localhost (:: 1/127.0.0.1), вы не используете сетевую карту, имеющуюся на вашем сервере, а скорее как виртуальную карту, которую имеют окна. Я не думаю, что в любом случае можно сконфигурировать loopback-карту и удалить из нее IPv6, не исключая поддержки всей системы, но в Win2008 вы, вероятно, больше не сможете этого делать.
Вы можете проверить, что ваша физическая карта не используется, запустив утилиты захвата сетевых пакетов. В окнах вы никогда не сможете обнюхать трафик, который проходит виртуальную кольцевую карту.
Тем не менее, если вы хотите получить доступ с другой машины (через соединение, которое будет проходить через вашу физическую карту), вы должны увидеть, что адрес IPv4 возвращается Request.UserHostAddress
У 4 парней с сайта Rolla есть решение здесь, которое я использовал в своем приложении.
Update:
На всякий случай эта ссылка не работает, вот код, основанный на этой ссылке:
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
(может быть беспроводной адаптер или проводной адаптер Ethernet), который вы хотите отключить IPv6, и нажмите Properties
.
В окне network adapter properties
отключите Internet Protocol Version 6 (TCP/IPv6)
и нажмите "ОК".
Введите regedit
в командной строке для запуска редактора реестра, перейдите к следующему разделу реестра в редакторе реестра.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
Если элемент DisabledComponents
недоступен, вы должны создать его в следующем формате, перейдя в Edit → New → DWORD (32-bit) значение и установите значение 0xffffffff
(просто введите ffffffff
). Это отключит все функции IPv6, кроме интерфейса loopback IPv6, и, наконец, нажмите OK
.
Перезагрузите компьютер.