HttpClient使用Azure容器实例抛出一个随机异常(可能是10次尝试中的2-3次)
异常信息:System.Net.WebException at System.Net.HttpWebRequest.EndGetResponse(System.IAsyncResult)at at System.Net.Http.HttpClientHandler.GetResponseCallback(System.IAsyncResult) 异常信息:System.Net.Http.HttpRequestException at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) 在 System.Net.Http.HttpClient + \ u003cFinishSendAsync \ u003ed__58.MoveNext() 在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSucem.Net.Http.HttpClient + \ u003cFinishSendAsync \ u003ed__58.MoveNext() 在 SystetHelpers.MSIResourcesAccessInfoHelper + \ u003cGetResourcesAccessInfo \ u003ed__0.MoveNext()\ n.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\ n 在System.Runtime.m [[System .__ Canon,mscorlib,Version = 4.0.0.0, 文化=中性, 公钥= 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在System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\ r \在System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)\ r \ n ---内部异常堆栈跟踪结束--- \ r \ n在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\ r \在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\ r \ n在System.Net.Http.HttpClient。\ u003cFinishSendAsync \ u003ed__58.MoveNext()\ r \ n ---从前一个位置的堆栈跟踪结束异常被抛出--- \ r \ n在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\ r \ n在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\ r \ n在UcClearly.MSIAPIHelpers.MSIResourcesAccessInfoHelper \ u003cGetResourcesAccessInfo \ u003ed__0.MoveNext()
哪个建议远程服务器DNS没有解决,我尝试使用服务器的公共IP但也有相同的随机行为,我不确定为什么Azure容器实例会以这种随机方式运行
答案 0 :(得分:1)
此行为是预期的。
Windows容器减慢了网络准备时间
最初创建时,Windows容器可能长达30秒(在极少数情况下甚至更长)都没有入站或出站连接。如果您的容器应用程序需要Internet连接,请添加延迟和重试逻辑,以允许30秒建立Internet连接。初始设置后,容器联网应适当恢复。