Может ли он отправлять сообщение служебной шины в службе Windows

Может ли он отправлять сообщение служебной шины Azure в службе Windows?

Недавно я создал службу Windows NT для отправки сообщения в очередь Azure. Но это не удалось. Я создал два тестовых консольных приложения, одно из которых использует тот же код, что и моя служба Windows NT, для отправки сообщения служебной шины, а другое — для получения сообщения. Тестовые консольные приложения успешно отправляют и получают сообщения. В моей службе Windows NT он не выдает никаких сообщений или ошибок.

Я хочу знать, поддерживается ли сообщение служебной шины Azure в службе Windows NT.

Мое приложение не является ни рабочей ролью, ни веб-ролью. Это просто служба Windows NT.


person Paul Zhou    schedule 14.05.2012    source источник


Ответы (1)


Код клиента служебной шины работает одинаково везде, включая службы Windows.

Но!

Службы NT часто работают на вашем компьютере как локальная служба или сетевая служба, и в зависимости от настроек вашей сети эта учетная запись может не иметь достаточных прав для общения через посредников, таких как прокси-серверы. Мы знаем, что у некоторых наших клиентов ИТ-отдел не разрешает учетные записи машин через внешние прокси-серверы, поэтому учетная запись машины не будет работать. Тем не менее, вы должны и будете видеть, что исключения будут генерироваться, если связь не работает, поэтому вам следует дважды проверить свой код на это и/или также включить трассировку WCF.

Клеменс

person Clemens Vasters    schedule 14.05.2012
comment
Спасибо за ответ. На самом деле я обнаружил, что если я использую метод QueueClient.BeginSend для запуска асинхронной операции по отправке сообщения, это не удается. Если я просто использую метод QueueClient.Send, он успешно отправляет сообщения. Я не нашел первопричину, но, по крайней мере, теперь это работает. - person Paul Zhou; 16.05.2012
comment
Это странно, потому что под обложкой это точно такой же путь кода. Вы звонили в EndSend? - person Clemens Vasters; 16.05.2012
comment
Да, я могу поделиться своим фрагментом кода:public void BeginSendMessage(T messageBody) { BrokeredMessage message = new BrokeredMessage("Test Message"); message.Properties["testproperty"] = "test value"; queueClient.BeginSend(message, new AsyncCallback(SendCompleted), queueClient); } private void SendCompleted(IAsyncResult result) { QueueClient queueClient = result.AsyncState as QueueClient; queueClient.EndSend(result); } - person Paul Zhou; 16.05.2012