.net - 无法从Docker托管的Web应用程序调用外部api

标签 .net docker asp.net-web-api asp.net-core .net-core

我的Web应用程序在docker上运行,并尝试调用IIS上托管的外部api,但我无法访问外部api。抛出以下错误:但是当我的Web应用程序在本地iis上运行时,便能够连接api并获得响应。请帮我。

InnerException {System.Net.Http.HttpRequestException: No such host is known ---> System.Net.Sockets.SocketException: No such host is known at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, enter image description hereCancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask1 creationTask) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) at System.Net.Http.HttpClient.GetStringAsyncCore(Task1 getTask)} System.Exception {System.Net.Http.HttpRequestException}

最佳答案

我认为问题是Docker DNS服务器。您可以尝试使用真实的DNS服务器,例如8.8.8.8

如果您在Windows上使用Docker,则可以尝试更新DNS设置8.8.8.8

Docker DNS

如果您使用的是Ubuntu,则可以尝试以下设置:

# /etc/docker/daemon.json
{
    "dns": ["8.8.8.8"]
}

关于.net - 无法从Docker托管的Web应用程序调用外部api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53434581/

相关文章:

java - 有没有更简单的方法将 mysql 驱动程序加载到类路径?

javascript - 来自 WebApi2 response.data 的 Angular ng-repeat 刷新

asp.net-mvc-4 - 将 Web API Controller 部署到生产环境

.net - 是否可以在 .NET 中在运行时修改方法体?

.net - Concurrency Visualizer - 了解 WPF/CLR 线程

c# - 检测 int 中不为零的数字的方法?

c# - ReportViewer 错误 - 报告的定义“无效。无法加载文件或程序集 Microsoft.ReportViewer.ProcessingObjectMode

docker - Google Cloud 计算实例无法按启动脚本的预期运行

docker - 如何在 Amazon ECS 上找到服务地址 (URL) 和/或对 Mailtrain 实例进行故障排除?

c# - 何时使用路由数据以及何时在 ASP.NET Web API 中使用查询字符串?