Время ожидания исходящих HTTP-запросов при запуске ASP.NET в Docker Desktop с использованием контейнера Windows - PullRequest
1 голос
/ 15 мая 2019

Я впервые запускаю веб-приложение ASP.NET в Docker Desktop.Я создал приложение ASP.NET (для .NET Framework), используя стандартный шаблон в Visual Studio 2019 с поддержкой Docker.

Dockerfile:

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-1803
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .

Docker-compose.yml:

version: '3.4'

services:
  mydockerizedwebapp:
    image: ${DOCKER_REGISTRY-}mydockerizedwebapp
    container_name: mydockerizedwebapp
    build:
      context: .\MyDockerizedWebApp
      dockerfile: Dockerfile

Docker-compose.override.yml:

version: '3.4'

services:
  mydockerizedwebapp:
    ports:
      - "80"
networks:
  default:
    external:
      name: nat

Я установил Docker Desktop на свойКомпьютер Win 10 (под управлением Windows Containers).

Проблема в том, что я не могу отправлять исходящие http-запросы с веб-сервера в Docker.

Я получаюследующее сообщение об ошибке:

'Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, потому что подключенный хост не смог ответить'

Работа веб-сервера в IIS Express работает нормально.

Я использовал Powershell для подключения к контейнеру, в котором находится изображение.Запуск «Test-NetConnection» возвращает следующий вывод:

PS C:\inetpub\wwwroot> Test-NetConnection


ComputerName           : internetbeacon.msedge.net
RemoteAddress          : 13.107.4.52
InterfaceAlias         : Ethernet
SourceAddress          : 172.24.21.136
PingSucceeded          : True
PingReplyDetails (RTT) : 14 ms

Test-NetConnection -port 80 завершается ошибкой через некоторое время с этим выводом:

PS C:\inetpub\wwwroot> Test-NetConnection -port 80
WARNING: TCP connect to (13.107.4.52 : 80) failed


ComputerName           : internetbeacon.msedge.net
RemoteAddress          : 13.107.4.52
RemotePort             : 80
InterfaceAlias         : Ethernet
SourceAddress          : 172.24.21.136
PingSucceeded          : True
PingReplyDetails (RTT) : 15 ms
TcpTestSucceeded       : False

ЕслиЯ открываю другое окно powershell в том же контейнере и запускаю «netstat -an», чтобы увидеть активные соединения, TCP-запрос виден:

Active Connections

  Proto  Local Address          Foreign Address        State
[...]
  TCP    172.24.21.136:49169    13.107.4.52:80         SYN_SENT

Состояние «SYN_SENT» для всей продолжительности соединенияtest.

Я попытался установить MTU, как предложено в Docker - истечение времени ожидания исходящих HTTPS-запросов , но у меня это не сработало.

Стоит отметить, что яЯ работаю удаленно, поэтому у меня есть VPN-соединение (программное обеспечение), но оно не работает, даже если я отключаю VPN.

Я что-то упустил?Я пытался создать веб-приложение ASP.NET Core с использованием образа nanoserver, но проблема все еще существует.Таким образом, я думаю, что проблема должна быть в моей конфигурации Docker / сети?

Обновление:

Я протестировал запуск того же образа на другом компьютере, который не имеет ни VPN-соединения, нитот же AV установлен.«Test-NetConnection -port 80» работал мгновенно.

Вот захват Wireshark успешного теста на другом компьютере: Successful connection test

Вот захват Wireshark неудачного тестана моем компьютере: Failing connection test

Я вижу, что неисправный компьютер использует тот же DNS-сервер, чтобы найти ip для "internetbeacon.msedge.net", но после ответа с IP 13.107.4.52, TCP-запрос от контейнера не записывается.На рабочей машине этот запрос перехватывается сразу после ответа DNS.

1 Ответ

0 голосов
/ 16 мая 2019

Проверьте брандмауэр / AV хоста, так как он, скорее всего, здесь ограничен

...