C# docker compose can';t请求外部网络

C# docker compose can';t请求外部网络,c#,docker,docker-compose,httpclient,C#,Docker,Docker Compose,Httpclient,我被问题缠住了。 我知道这也许是个糟糕的问题,但是 我什么都做不了。 我有一些这样的代码测试: [HttpGet] public async Task<object> Get() { try { Console.WriteLine("Start"); HttpClient httpClient = new HttpClient

我被问题缠住了。 我知道这也许是个糟糕的问题,但是 我什么都做不了。 我有一些这样的代码测试:

        [HttpGet]
        public async Task<object> Get()
        {
            try
            {
                Console.WriteLine("Start");
                HttpClient httpClient = new HttpClient()
                {
                    BaseAddress = new Uri("https://pikbest.com")
                };
                Console.WriteLine("Start call");
                var response = await httpClient.GetStringAsync("?m=download&id=123&flag=1&free_zone=0");
                Console.WriteLine("Call ok");
            } catch(Exception ex)
            {
                Console.WriteLine($"Exception: {ex.InnerException}\n{ex.Message}\n{ex.StackTrace}");
                return "Not ok";

            }
            return "Ok";
        }
这是docker compose.yml:

version: "3"

services:
    serverside:
        build: ./testhttpclient
        container_name: testhttpclient
        ports:
            - '80:80'
version: "3"

services:
    serverside:
        build: ./testhttpclient
        container_name: testhttpclient
        network_mode: "host"
        ports:
            - '80:80'
这是控制台。写入日志:

testhttpclient | Start
testhttpclient | Start call
testhttpclient | Exception: System.Net.Sockets.SocketException (11): Resource temporarily unavailable
testhttpclient |    at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
testhttpclient | Resource temporarily unavailable
testhttpclient |    at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
testhttpclient |    at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
testhttpclient |    at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
testhttpclient |    at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
testhttpclient |    at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
testhttpclient |    at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
testhttpclient |    at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
testhttpclient |    at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
testhttpclient |    at System.Net.Http.HttpClient.GetStringAsyncCore(Task`1 getTask)
testhttpclient |    at testhttpclient.Controllers.WeatherForecastController.Get() in /app/Controllers/WeatherForecastController.cs:line 40
tController.Get(                                                                                                             ) in /app/Controllers/WeatherForecastController.cs:line 40

真的谢谢你

尝试将网络模式添加到
docker compose.yml

version: "3"

services:
    serverside:
        build: ./testhttpclient
        container_name: testhttpclient
        ports:
            - '80:80'
version: "3"

services:
    serverside:
        build: ./testhttpclient
        container_name: testhttpclient
        network_mode: "host"
        ports:
            - '80:80'
如果不行,试试桥牌

或创建一个网络:

version: "3"

services:
    serverside:
        build: ./testhttpclient
        container_name: testhttpclient
        ports:
            - '80:80'
        networks:
            - "serverside_nw"

networks:
  serverside_nw:
    external: true

为什么没有人能帮助我?