IIS Express не запускается на локальном хосте с ipv6

Здравствуйте, уважаемые пользователи Stackoverflow!

Вот что-то смешное случилось со мной - может быть, вы можете объяснить, почему?

Вчера в середине рабочего дня моя установка IIS Express перестала работать.

Сначала я подумал, что это проблема с проектом ASP.NET, над которым я работал, просто зависшим и не запустившимся, потому что страница продолжала зависать, пока не истечет время ожидания. Затем я попробовал несколько других проектов, также настроенных для работы на локальном хосте: 8080, и они тоже не загружались, даже простые HTML.

Теперь, когда я говорю, что они не будут загружаться; Я имею в виду полное отсутствие активности. Страница будет «загружаться» в хроме целую вечность, а консоль IISExpress не будет регистрировать какие-либо запросы GET, пока в конечном итоге вкладка в хроме не отобразит ошибку тайм-аута.

Этим утром я (с некоторой помощью) кое-что понял - по какой-то причине, когда я пинговал localhost, возвращался адрес ipv6 ::1: вместо адреса ipv4 127.0.0.1 - раньше я не замечал такого поведения, и я не менял сеть. настройки.

Я отредактировал свой файл HOST и включил запись для 127.0.0.1 localhost, чтобы заставить ping localhost вернуть адрес ipv4. Это сработало, и когда я снова попытался привязать IIS Express к localhost:8080, это также сработало.

Мой вопрос; Что за черт?!?!

Я понятия не имею, почему это произошло. Я знаю, что мне удалось решить индивидуальную проблему, отредактировав файл HOST, но кто-нибудь знает, почему это могло произойти?

Есть идеи, почему ping localhost вдруг начал возвращать адрес ipv6? И есть идеи, почему IIS Express не будет работать с ipv6? (Я предполагаю, что движок IIS к настоящему времени уже запечет это).

Я хотел бы понять, что произошло, чтобы избежать дальнейших проблем, и ради любопытства.

Спасибо заранее за любую информацию,

Фил


person Phil Baines    schedule 19.06.2012    source источник


Ответы (2)


  • Откройте окно командной строки администратора, затем выполните это с портом, к которому вы привязаны: netsh http add urlacl url="http://[::1]:8080/" user=everyone. Это говорит вашей системе, что привязываться к ::1 — это круто.
  • Откройте %USERPROFILE%\Documents\IISExpress\config\applicationhost.config, найдите раздел своего сайта и добавьте привязку IPv6: <binding protocol="http" bindingInformation="[::1]:8080:*" />

Образец:

<site name="WebSite1" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\ryan.versaw\Documents\WebSite1" /> </application> <bindings> <binding protocol="http" bindingInformation="*:8080:localhost" /> <binding protocol="http" bindingInformation="[::1]:8080:*" /> </bindings> </site>

person Ryan Versaw    schedule 18.08.2014

Пока IPv6 включен в вашей системе, ::1 и 127.0.0.0 являются допустимыми адресами для «localhost». Какой из двух возвращается системой и используется, например, для ping более или менее недетерминирован, если только программа специально не запрашивает IPv4 или IPv6-адрес, а поскольку ping Windows может обрабатывать и то, и другое, она, вероятно, этого не делала.

Что касается IIS, подобные ответы предполагают, что такое поведение является преднамеренным, и вам необходимо отдельно включить привязку к IPv6-адресу: https://serverfault.com/questions/123796/get-iis-7-5-to-listen-on-ipv6

person Magnus    schedule 16.01.2013