有一个web应用程序正在本地机器上的容器中运行。此web应用程序可通过url访问:";http://myapp:3030",在我的本地机器上,我可以浏览应用程序。myapp API也可以从邮递员使用";http://myapp:3030/api"url。
使用aspnet.core httpclient,我想与"http://myapp:3030/api"(容器内(来自运行在我的本地机器localhost:5001(容器外(:上的asp.net核心应用程序
using var content = new StringContent(data, Encoding.UTF8,"application/json");
HttpResponseMessage httpResponse;
try
{
httpResponse = await httpClient.PostAsync(new Uri("http://myapp:3030/api/dosomething"), content);
httpResponse.EnsureSuccessStatusCode();
}
catch (HttpRequestException e)
{
Debug.WriteLine(e.Message);
throw;
}
上面的请求失败;目前还不知道这样的宿主"例外,而同样的请求尽管邮递员工作正常。如何从localhost上的aspnet.core web应用程序与容器中的web api通信?
假设您使用--name myapp -p 5001:3030
启动容器,那么Postman(以及您的浏览器和主机上的其他代码,而不是在容器中(将到达localhost:5001
路由,并且同一Docker网络中的其他服务将需要使用myapp:3030
。
如果没有共享网络,就会出现这样的DNS错误。
为了保持一致性,在调试本地容器时尽量不要重新映射端口。