我们正在使用 Azure 函数通过 Azure NotificationHubClient 发送推送通知。这个函数在实时环境的高峰时间被调用很多,因此我们从 NotificationHubClient.SendNotificationAsync() 方法中抛出了很多 SocketExceptions。
异常详情:
Microsoft.Azure.NotificationHubs.Messaging.MessagingException: Unexpected exception encountered TimeStamp:2020-03-27T04:14:35.4655705Z ---> System.Net.Http.HttpRequestException: Cannot assign requested address ---> System.Net.Sockets.SocketException: Cannot assign requested address
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask`1 creationTask)
at System.Threading.Tasks.ValueTask`1.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.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) …Run Code Online (Sandbox Code Playgroud) 我目前在进行 http 调用时偶然发现了 Angular JS 中的一个奇怪问题。我执行 POST 请求后,等待大约 2-3 分钟后,调用失败,返回:
空响应文本
$.support.cors = true;
var req = {
method: 'POST',
url: serverIp + "UpdateDocumentInventar",
headers: {
'codDocument': CodDocument,
'deviceId': deviceId,
'authToken': authToken,
'codGestiune': codGestiune
},
timeout: timeoutNR,
data: articoleChanged <--- array of items
}
var request = $http(req);
return (request.then(handleSuccess, handleError));
Run Code Online (Sandbox Code Playgroud)无法访问网络服务器,因为我已将记录器放在那里以查看是否存在问题。
我还需要提到的是,这个调用并不总是失败——有时有效,有时无效。(我在网上读到状态代码0通常与未设置CORS相关 - 我也设置了这个,这肯定不是问题,因为其他类似的请求都能正确执行)。
到目前为止我已经尝试过什么: - 将http请求的超时值设置为更大的值(60000000) - 在服务器上设置更大的http请求接受长度(我认为这也可能是一个问题,尽管这通常返回状态码 41)
感谢每一次帮助,
提前致谢