Visual Studio настраивает мою роль в сети Azure до 127.255.0.0:82 вместо 127.0.0.1:80

У меня есть Windows Azure SDK 1.6, установленный вместе с инструментами Azure. У меня есть одна веб-роль (с двумя конечными точками, порт 80 для http и порт 443 для https) и только один экземпляр роли веб-роли (для целей тестирования).

Когда я запустил его из Visual Studio для отладки на прошлой неделе, он запустил эмулятор, привязал его к IIS с привязкой 127.0.0.1:80, и все было гладко.

Но по состоянию на вчерашний день, как только я начал, он пытался привязать его к 127.255.0.1:82 и прекратил работать с этой ошибкой (из Visual Studio):

Не удалось добавить отладчик в рабочий процесс iis для URL 'http://127.255.0.0:82'

Теперь, если я вручную перейду в IIS и изменим привязки, я могу получить доступ к сайту через браузер, но, очевидно, я не могу отлаживать его через VS.

Почему Visual Studio делает это? Что изменило его с прошлой недели (я только сделал изменения кода, и я прокомментировал их)?

Изменить: я знаю об этом blog, но моя проблема кажется другой, потому что по одной причине у меня нет ошибок в журналы событий. И, как я уже упоминал, как только я вручную меняю привязки в IIS, я могу получить доступ к сайту правильно, поэтому пул приложений настроен правильно.

Edit2: У меня есть следующий набор:

<compilation debug="true" targetFramework="4.0" />

И мой проект облака также настроен на запуск проекта.

Ответ 1

Когда я запустил его из Visual Studio для отладки на прошлой неделе, он запускал эмулятор, привязал его к IIS с привязкой 127.0.0.1:80 и все было персиковым.

Я не верю, что вы когда-либо отлаживали развернутый проект Azure Emulator с привязкой 127.0.0.1:80 к IIS. Есть вероятность, что то, что вы отлаживаете, - это просто проект веб-приложения, а не Azure Deployed. Позвольте мне объяснить, почему:

  • В эмуляторе Windows Azure используется встроенный эмулятор балансировки нагрузки (LB). Эмулируемый LB привязывается к порту 127.0.0.1 80 (если порт 80 уже он использует порт 81)

  • Windows Azure Tools динамически создает виртуальный IP-адрес для каждого экземпляра webrole у вас есть. Эти динамические IP-адреса 127.255.0.X, где X - логический номер экземпляра (0, 1, 2 и т.д.).

  • Инструменты Windows Azure создают веб-сайт в локальном IIS с привязкой 127.255.0.X и порт 82

enter image description here

Шаг 3 повторяется для каждого выбранного вами экземпляра.

При запуске отладки ваш браузер обычно открывает http://127.0.0.1:81/, который является адресом LB. Но запрос с этого адреса отправляется в IIS и привязывается к 127.255.0.X: 82. Вы не могли отлаживать развернутый проект Windows Azure Emulator, вручную привязывая отладчик до 127.0.0.1:80, потому что, если все в порядке, процесс w3wp не прослушивается на этом адресе: порт, но Azure эмулирует LB.

Когда у вас есть только WebRole (никаких дополнительных сайтов не определено), Windows Azure Tools знает, что он должен присоединить отладчик к 127.255.0.X: 82, где прослушивает процесс w3wp.

Это чистая рабочая конфигурация Azure Emulator и SDK и инструментов v.1.6 (я думаю, что 1.5 и даже обратно к 1.3, где впервые был введен режим Full IIS)

Теперь, если я вручную перейду в IIS и изменим привязки, я могу получить доступ сайт через браузер, но, очевидно, я не могу отлаживать его через VS.

Да, вы сможете получить доступ к сайту, но таким образом вы пропустите эмулированный LB, что не является точкой при разработке приложений Windows Azure.

Если вы решаете проблемы такого рода, я предлагаю вам очистить решение, перезагрузить компьютер, и если проблема не исчезнет, ​​удалите SDK и инструменты и выполните чистую полную установку SDK и Authoring tols для Windows Azure v.1.6 с помощью установщика веб-платформы.