Azure表存储,如何避免连接错误(我试过重试)

时间:2012-03-25 09:56:51

标签: c# azure azure-storage

我收到很多错误,例如No connection could be made because the target machine actively refused it 70.37.127.112:443

所以我添加Microsoft.Practices.TransientFaultHandling来重试。

但仍有很多错误(即使在重试后)

我想知道:

第1,由于Azure是分布式服务,为什么我总是达到70.37.127.112(我通过简单的原始DefaultEndpointsProtocol=https;AccountName=storage_account;.....,访问存储,然后使用tableContext.CreateQuery<datatype>("table_name");)。我注意到我的所有表(即使在不同的存储帐户中)都达到了70.37.127.112。我的问题是,有没有办法改变它?

2,如何完全消除上述错误?

错误详情

System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 70.37.127.112:443
   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.GetResponse()
   at System.Data.Services.Client.QueryResult.Execute()
   at System.Data.Services.Client.DataServiceRequest.Execute[TElement](DataServiceContext context, QueryComponents queryComponents)
   at System.Data.Services.Client.DataServiceQuery`1.Execute()
   at System.Data.Services.Client.DataServiceQuery`1.GetEnumerator()
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at Microsoft.Practices.TransientFaultHandling.RetryPolicy.<>c__DisplayClass1.<ExecuteAction>b__0()
   at Microsoft.Practices.TransientFaultHandling.RetryPolicy.ExecuteAction[TResult](Func`1 func)

1 个答案:

答案 0 :(得分:1)

关于第一个问题,Azure Fabric Controller负责分配资源。当您请求服务实例(例如Azure存储)时,它将找到一个可用于处理请求的服务器。由于Azure是共享环境,因此该服务器可能负责不同的服务实例,无论是您自己还是其他人。

您可以使用关联组as explained by Nuno Godinho来更好地控制结构控制器如何配置您的服务(例如,在同一群集或不同群集中)。

有关架构的说明,请参阅Inside Windows Azure storage: what's new and under the hood deep dive

关于第二个问题,关于消除错误,我注意到被拒绝的端口是443.我之前发现这个端口被我自己的网络上的防火墙或代理阻止了。请检查是否是这种情况并将其打开。

如果您确定自己的流量可以到达远程服务器,那么下一个最佳操作方法是使用Windows Azure的支持组打开支持服务单。根据我的经验,他们快速而有效。

为此,请转到Support options for Windows Azure并选择“客户支持” Windows Azure。