【问题标题】:"SocketException: Name or service not known" when URL loads fine in browser当 URL 在浏览器中正常加载时出现“SocketException:名称或服务未知”
【发布时间】:2020-09-02 19:46:07
【问题描述】:

我有以下代码:

var url = "http://myComputer.myDomain.net:44344/Testing/TestCall";
var httpClient = new HttpClient();
var httpResponse = await httpClient.GetAsync(url);
var content = await httpResponse.Content.ReadAsStringAsync();

当我运行它时,我会抛出以下异常:

System.Net.Sockets.SocketException (0xFFFDFFFF): Name or service not known
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)    

内部例外:

System.Net.Http.HttpRequestException: Name or service not known
 ---> System.Net.Sockets.SocketException (0xFFFDFFFF): Name or service not known
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)

还有额外的调用堆栈,但我不认为它有用...

真正奇怪的是,如果我将 URL (http://myComputer.myDomain.net:44344/Testing/TestCall) 放入浏览器中,它会很好地在我的服务上运行调用并返回预期的输出。

为什么会出现“名称或服务未知”异常,但相同的 URL 在浏览器中可以正常工作?

附加信息:如果我将 url 替换为 "http://google.com",那么它可以正常工作。这让我觉得这是我的服务。但是从浏览器加载的服务很好......我很困惑。

【问题讨论】:

  • 您能否添加您的Startup.cs 代码+ 确保您已导入或下载System.Net.Http
  • @Kardon63 - 它适用于 url http://google.com。所以它一定是我的服务......奇怪的是它从浏览器加载得很好。
  • 这听起来更有可能是环境问题。如果您尝试将System.Net.Ping 改为myComputer.myDomain.net,会发生什么情况?

标签: c# asp.net-core asp.net-core-3.1


【解决方案1】:

我忘记了,因为我使用的是 docker 容器,所以我不能使用主机名和端口号让一个容器地址另一个容器。

当我将 myComputer.myDomain.net:44344 替换为在我的 docker 文件中找到的容器的主机名时,一切都开始工作了。

【讨论】:

猜你喜欢
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 2016-12-21
  • 2013-08-08
  • 2016-01-06
  • 2019-07-07
  • 1970-01-01
相关资源
最近更新 更多