首页 > 解决方案 > ASP.NET Core 微服务

问题描述

我正在使用 docker 和 asp.net core 2 创建微服务。我创建了 2 个微服务和一个 web api。我正在尝试使用 HttpClient 从 Web api 调用微服务端点。下面是 web api 控制器代码

    [HttpGet]
    public async Task<IEnumerable<string>> GetAsync()
    {
        
        var client = new HttpClient();
        var data = await client.GetAsync("http://localhost:8081/api/values");

        return new string[] { "apigateway-value1", "apigateway-value2" };
    }

这是我的 docker-compose.yml 文件,其中指定了我要调用的微服务。

microserviceone:

image: ${DOCKER_REGISTRY}microserviceone
build:
  context: .
  dockerfile: MicroserviceOne/Dockerfile
ports: 
- "8082:80"

这是微服务 Dockerfile

FROM microsoft/aspnetcore:2.0 AS base    
WORKDIR /app    
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0 AS build    
WORKDIR /src    
COPY MicroserviceOne/MicroserviceOne.csproj MicroserviceOne/    
RUN dotnet restore MicroserviceOne/MicroserviceOne.csproj    
COPY . .    
WORKDIR /src/MicroserviceOne    
RUN dotnet build MicroserviceOne.csproj -c Release -o /app

FROM build AS publish    
RUN dotnet publish MicroserviceOne.csproj -c Release -o /app    

FROM base AS final    
WORKDIR /app    
COPY --from=publish /app .    
ENTRYPOINT ["dotnet", "MicroserviceOne.dll"]

问题是我收到错误“System.Net.Http.CurlException:无法连接到服务器”。如果我尝试使用命令访问同一端点,则从命令提示符

curl -X GET -H Content-Type: application/json  http://localhost:808/api/values    

我正在获取数据。我真的不知道发生了什么。

标签: dockerasp.net-coremicroservicesdocker-container

解决方案


您可以尝试使用主机名/IP 地址而不是 localhost。'localhost' 代表当前容器。


推荐阅读