首页 > 解决方案 > 无法连接到 docker 容器中托管的 restful api

问题描述

我的项目面临一个问题,我已经构建了一个 api 项目并将其放入 docker 容器中。

我可以使用浏览器中的本地主机通过网络访问容器,但是当尝试通过restsharp的代码使用它时,httpclient我得到连接被拒绝。

我尝试了本地主机,分配了直接 172 地址,甚至根据我读过的其他方向公开了一个指向 127.0.0.1 的端口。

我迷失了下一步,因为我似乎无法让它以任何方式工作

这是我设置的简单代码:

api调用

[Route("Internal/Email")]
    public class EmailController : ControllerBase
    {
        [Route("Get")]
        [HttpGet]
        public ActionResult<string> Get()
        {
            return "email got";
        }
    }

消费者来电:

public class TestController : Controller
    {
        private ServiceUrlConstants _serviceUrlConstants = new ServiceUrlConstants();
        private string _serviceUrl;
public IActionResult GetEmail()
        {
            try
            {
                _serviceUrl = _serviceUrlConstants.InternalServiceUrl;
                var httpClient = new HttpClient();
                var response = httpClient.GetAsync(_serviceUrl + "Internal/Email/Get");
                var content = response.Result.Content.ReadAsStringAsync();
                httpClient.Dispose();
                //client = new RestClient(_serviceUrl + "Internal/Email/Get");
                //var response = client.Execute(request);
                //var content = response.Content;
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                return RedirectToAction("Index");
            }
        }
}

Docker 配置(由 Visual Studio 自动构建,第三端口暴露除外)

internalapiservice:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_HTTPS_PORT=44310
    ports:
      - "17399:80"
      - "44310:443"
      - "127.0.0.1:45310:45310"
    volumes:
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro

标签: c#restdockerdocker-composerestsharp

解决方案


我认为默认情况下不允许外部连接。您可以尝试添加此问题中详述的 URL 保留。也许是这样的:

netsh http add urlacl url=https://+:44310/ user=everyone

(看起来您正在将您机器上的容器端口 443 映射到 44310 ..?)


推荐阅读