Хранилище таблиц Azure. Как избежать ошибки подключения (я попытался повторить попытку) - PullRequest
0 голосов
/ 25 марта 2012

Я получил много ошибок, таких как 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 Ответ

1 голос
/ 25 марта 2012

По поводу вашего первого вопроса, Azure Fabric Controller отвечает за распределение ресурсов.Когда вы запрашиваете экземпляр службы (например, хранилище Azure), он находит доступный сервер, который будет отвечать за обработку запросов.Этот сервер может отвечать за различные экземпляры службы, как ваши, так и других людей, поскольку Azure является общей средой.

Вы можете использовать группы сходства , как объяснил Нуно Годиньо , чтобыболее высокий уровень контроля над тем, как Fabric Controller будет предоставлять ваши услуги (например, в одном и том же кластере или в разных кластерах).

См. Внутри хранилища Windows Azure: что нового и что находится под капотом глубокого погружения для объяснения архитектуры.

По поводу второго вопроса об устранении ошибки, я заметил, что отказывается порт 443. Это случилось со мной до того, как этот порт был заблокирован брандмауэромили прокси в моей собственной сети.Проверьте, так ли это, и откройте его.

Если вы уверены, что ваш трафик может попасть на удаленный сервер, следующий лучший способ - открыть заявку в службу поддержки в группе поддержки Windows Azure.По моему опыту, они быстрые и эффективные.

Для этого перейдите на Варианты поддержки для Windows Azure и выберите Поддержка клиентов |Windows Azure.

...