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

问题描述:

我得到了很多错误,像No connection could be made because the target machine actively refused it 70.37.127.112:443Azure的表存储,如何避免连接错误(我试过重试)

所以我添加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) 

关于你的第一个问题,在Azure结构控制器负责分配资源。当您请求服务实例(例如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。

+0

大多数请求都很好,所以我认为这不是防火墙问题(并且部署在Azure上,所以我现在不接触防火墙)。我也用一些表的http,相同的错误。我会向他们提交一张票,谢谢你的建议。 – 2012-03-25 12:54:49

+1

我想你可能会混淆SQL Azure的主服务器和2复制备份在这里为什么存储服务器。存储服务并不像那样(即“主”这个术语在这里并不适用)。有分区服务器,分区大师等。总之,而不是我尝试在评论中解释,请观看布拉德:http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-961T – dunnry 2012-03-25 14:16:26

+0

谢谢你指出,dunnry。当然,3次复制的是数据,而不是为请求提供服务的计算服务器。我会更新答案。 – 2012-03-25 16:52:41