2015-12-30 3 views
0

Я пытаюсь подключиться к своей Azure Service Bus из моей роли рабочего, используя AMQP. Тем не менее, я получаю исключение тайм-аута. Когда я использую сетевой сниффер, я вижу, что он пытается связаться с Azure Service Bus с помощью порта 5671. Но он не отправляет сообщение ACK, а просто отключается. Я пробую это из Visual Studio 2015 с Azure Emulator.Подключиться к Azure Service Bus от роли рабочего, используя AMQP

Когда я пытаюсь сделать то же самое, с одного и того же компьютера и сетевого интерфейса, но затем из обычного приложения командной строки (так что нет роли и/или эмулятора Azure Worker), он работает. Мое приложение может отправить пакет ACK в Azure и получает сервер Hello от Azure.

Является ли Azure Emulator или рабочая роль блокировкой некоторых портов по умолчанию? Почему он работает из моего приложения командной строки, но не из моей роли Azure Worker? Я использую тот же ConnectionString и следующий код:

TopicClient client = TopicClient.CreateFromConnectionString(_connectionstring, _queueName); 
client.Send(new BrokeredMessage(msg)); 

ответ

1

я наконец-то нашел этот вопрос. В решении, которое использует Azure Emulator, я включил следующий пакет:

<package id="WindowsAzure.ServiceBus" version="2.5.1.0" targetFramework="net451" /> 

В моем консольном приложении я использовал следующий пакет:

<package id="WindowsAzure.ServiceBus" version="3.0.9" targetFramework="net46" /> 

Так меняю Azure решения до версии 3.0.9 решена проблема. Похоже, Microsoft ввела нарушение в версии 3.x.

0

В порядке вероятности, я думаю вопрос в том, что:

  • _connectionstring имеет различные значения в VS vs. приложения консоли; возможно, из-за файлов конфигурации, используемых во время выполнения, и/или, тем не менее, вы загружаете строку подключения. Я бы рекомендовал повторить попытку теста с жестко закодированными значениями в CreateFromConnectionString(), чтобы это исключить.
  • Существует брандмауэр блокирует порт (брандмауэр Windows, корпоративные сети и т.д.)
  • Существует антивирусный мешая трафик
+0

Благодарим за отзыв. Когда я отлаживаю оба приложения, имена соединений и имена очередей точно совпадают, также во время выполнения. И поскольку я получаю succussful соединение с моим консольным приложением с того же компьютера и сети, это не может быть проблемой блокировки брандмауэра с моего компьютера или корпоративной сети, не так ли? То же самое касается антивируса. – Ronald

+0

Вы пробовали: запустили Visual Studio в качестве администратора? Запуск консольного приложения в режиме отладки из Visual Studio, чтобы узнать, возникла ли проблема (показано, что проблема с VS)? – BlueSky

Смежные вопросы