Эмулятор Azure Compute v2.5.0.0 - IP-адрес и порт (публичный порт в v2.5).
В документации говорится, что до выпуска Azure SDK 1.5 развертывания веб-ролей были распределены по одному и тому же IP-адресу - 127.0.0.1, для различения веб-ролей использовались разные номера портов. Это поведение вернулось сейчас? Я заметил, что мои веб-роли развернуты под одним и тем же IP-адресом с разницей в номерах портов.
Я последовательно получаю переназначение портов, если приложение запускается впервые после перезагрузки компьютера. При дальнейшем расследовании заметил следующие вещи.
- Если машина перезагружается без выхода из Compute Emulator, порты, в которых ранее были развернуты веб-роли, НЕ освобождаются. Найдите вывод команды netstat ниже после перезагрузки машины. Это заставит эмулятор вычислений найти порт (8070), упомянутый в csdef, как занятый и рассмотреть возможность переназначения при следующем развертывании. Скажем, если мы выйдем из compute emulator или сделаем csrun.exe removeall/clean/shutdown из командной строки перед перезапуском, тогда все порты, используемые для развертывания служб, будут освобождены.
netstat -aon | findstr 8070
Прото Локальный адрес Внешний адрес Состояние PID
TCP 0.0.0.0:8070 0.0.0.0:0 СЛУШАТЬ 4
TCP [::]: 8070 [::]: 0 СЛУШАТЬ 4
ТАСКЛИСТ / ФИ "PID eq 4"
Имя изображения PID Имя сеанса Session# Mem Usage
Система 4 Услуги 0 288 К
- Служба недоступна по ожидаемому адресу (ip: порт) из-за этого переназначения порта для вышеуказанного сценария в Azure SDK 2.5. Переназначение также происходит в Azure SDK 2.1, но затронут только частный порт, и приложение работает как общий порт, оставаясь неизменным. Но с Azure SDK 2.5 - общедоступный порт был переназначен, что приводит к сбою приложения. Найдите приведенный ниже снимок экрана csrun.exe /run [сведения о пакете] в Azure SDK 2.1 и 2.5.
Вы рекомендуете решение, чтобы решить эту проблему?
1 ответ
Я нашел решение для вышеуказанной проблемы.
- Документация MSDN гласит: до Azure SDK 1.5 развертывания веб-ролей были распределены по одному и тому же IP-адресу - 127.0.0.1, при этом разные номера портов использовались для разграничения веб-ролей.
Это поведение (тот же IP-адрес, но другой порт для разных веб-ролей) будет существовать, если режим эмулятора находится в iisexpress.
- Я понял, что в Azure SDK 2.5 - режим iisexpress по умолчанию (где, как в Azure SDK 2.1 - режим фуллемулятора по умолчанию). Все начали работать обратно, когда задан аргумент фуллемулятора
/usefullemulator
csrun.exe /devfabric:shutdown / полезно lemulator csrun.exe / devfabric: чистый / полезный_мулятор csrun.exe /devfabric:start / полезно lemulator csrun.exe / run [pack] / полезно lemulator