0

HttpClient 使用 Azure 容器实例抛出随机异常(10 次尝试中可能有 2-3 次)

异常信息:System.Net.HttpWebRequest.EndGetResponse(System.IAsyncResult) 处 System.Net.Http.HttpClientHandler.GetResponseCallback(System.IAsyncResult) 处的 System.Net.WebException 异常信息:System.Runtime 处的 System.Net.Http.HttpRequestException .ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) 在 System.Net.Http.HttpClient+\u003cFinishSendAsync\u003ed__58.MoveNext() 在 System.Runtime.ExceptionServices。 ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSucem.Net.Http.HttpClient+\u003cFinishSendAsync\u003ed__58.MoveNext() 在 SystetHelpers.MSIResourcesAccessInfoHelper+\u003cGetResourcesAccessInfo\u003ed__0.MoveNext()\n.Runtime.ExceptionServices.ExceptionDisp()Throw()\n 在 System.Runtime.m[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c56193ompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.ThreC.Main(System.String[])

在代码方面,我只是在开火

await httpClient.GetAsync($"http://xyz.eastus.cloudapp.azure.com/api/controller/{id}");
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsAsync<ResourceAccessInfo>();

行为非常随机,在 10 次尝试中仅发生 2-3 次

同样适用于 VM 容器。

更新:

附加异常信息:System.Net.Http.HttpRequestException:发送请求时出错。---\u003e System.Net.WebException:无法解析远程名称:\u0027cloudbridge1.eastus.cloudapp.azure.com\u0027\r\n at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\r\ n 在 System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)\r\n --- 内部异常堆栈跟踪结束 ---\r\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\ n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Net.Http.HttpClient.\u003cFinishSendAsync\u003ed__58.MoveNext()\r\n--- 来自上一个位置的堆栈跟踪结束在 System.Runtime.ExceptionServices.ExceptionDispatchInfo 引发了异常 ---\r\n。

这表明远程服务器 DNS 未解析,我也尝试使用服务器的公共 IP 但相同的随机行为,我不确定 Azure 容器实例为什么会以这种随机方式运行

4

1 回答 1

1

这种行为是预期的。

Windows 容器会降低网络就绪速度
在初始创建时,Windows 容器可能会在长达 30 秒(或在极少数情况下更长)内没有入站或出站连接。如果您的容器应用程序需要 Internet 连接,请添加延迟和重试逻辑以允许 30 秒建立 Internet 连接。初始设置后,容器网络应适当恢复。

https://docs.microsoft.com/en-us/azure/container-instances/container-instances-troubleshooting#windows-containers-slow-network-readiness

于 2018-12-28T08:16:57.607 回答