. Net Основная версия: 3.1 ОС: Windows 10 (1903) Docker версия: 19.03.5
Привет
Я делаю свое первое доказательство концепции на докерах и. Net Core для изучения возможности перенести всю нашу инфраструктуру в докеры с. Net Core. Я пытался создать простой http-прослушиватель, который бы возвращал страницу приветствия. Я нашел проблему https://github.com/dotnet/core/issues/3072 очень полезной.
Короче говоря, я пытаюсь открыть два прослушивателя http: http: // +: 1234 https: // +: 12345
Чтобы это работало, в ОС хоста есть два резервирования ACL URL:
Reserved URL : http://+:1234/
User: \Everyone
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;WD)
Reserved URL : https://+:12345/
User: \Everyone
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;WD)
Также к https применяется действительный сертификат порт:
Привязки сертификатов SSL:
IP:port : 0.0.0.0:12345
Certificate Hash : a05077849c0835b0db2b16656cd42651122f283d
Application ID : {00000000-0000-0000-0000-000000000000}
...
Далее оба порта перенаправляются в контейнер:
docker run - -user ContainerAdministrator -p 1234: 1234 -p 12345: 12345 --name = https_container https_server_image
И контейнер работает под ContainerAdministrator.
HttpListener довольно хорошо работает на порте http. Например, попытка загрузить «http://localhost: 1234 / » работает нормально (пример кода просто возвращает «Hello word» html page). Попытка получить доступ к SSL-соединению для "https://localhost: 12345 / " завершается неудачно в браузере с "ERR_CONNECTION_RESET" в Chrome / Edge, "PR_CONNECT_RESET_ERROR" в Mozilla.
Интересно то, что оба Экземпляры HttpListener запускаются без проблем в контейнере, и нет никаких исключений. Конечно, то же самое тестовое приложение работает как чудо, когда запускается непосредственно на хост-машине без docker контейнеризации.
Так мне интересно, я что-то здесь пропускаю? Это намеренное поведение? Заранее спасибо за помощь!