使用Windows容器在Docker桌面中运行ASP.NET时,传出HTTP请求超时

时间:2019-05-15 12:00:28

标签: c# docker network-programming docker-windows

我第一次在Docker Desktop中运行ASP.NET Web应用程序。我已经在带有Docker支持的Visual Studio 2019中使用标准模板创建了一个ASP.NET应用程序(目标是.NET Framework)。

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

我已经在Win 10计算机(运行Windows容器)上安装了Docker Desktop。

问题是我无法从Docker内部的Web服务器发出传出的http请求。

我收到以下错误消息:

  

“连接尝试失败,因为连接的一方在一段时间后未正确响应,或者建立的连接失败,因为连接的主机未响应”'

在IIS Express中运行Web服务器工作正常。

我已经使用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-端口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”。

我已经尝试按照Docker - Outgoing HTTPS requests timing out中的建议设置MTU,但对我来说不起作用。

值得一提的是,我正在远程工作,因此我具有VPN连接(软件),但是即使断开VPN连接也无法正常工作。

我想念什么吗? 我已经尝试使用nanoserver映像创建ASP.NET Core Web应用程序,但是我仍然存在问题。所以我认为问题一定出在我的Docker /网络配置中?

更新

我测试了在另一台既没有VPN连接也没有安装相同AV的计算机上运行同一映像。 “ Test-NetConnection-端口80”立即生效。

这是Wireshark在不同计算机上成功测试的捕获: Successful connection test

以下是Wireshark在我的计算机上捕获的测试失败: Failing connection test

我看到发生故障的计算机正在使用同一DNS服务器来查找“ internetbeacon.msedge.net”的ip,但是在响应IP 13.107.4.52之后,没有从容器中记录任何TCP请求。在工作计算机上,DNS响应后立即捕获了此请求。

1 个答案:

答案 0 :(得分:0)

检查主机防火墙/ AV,因为这很可能是此处的麻烦