2012-05-14 116 views
0

它能够在Windows服务中发送Azure服务总线消息吗?它是否能够在Windows服务中发送服务总线消息

最近,我建立一个Windows NT服务来发送消息给Azure的队列。但它失败了。我创建了两个测试控制台应用程序,一个使用与我的Windows NT服务相同的代码发送服务总线消息,另一个接收消息。测试控制台应用程序成功发送和接收消息。在我的Windows NT服务中,它不会抛出任何消息或错误。

我想知道的是,Azure的服务总线的消息是否在Windows NT服务支持。

我的应用程序既不是工人也不是角色Web角色。它只是一个Windows NT服务。

回答

1

服务总线的客户端代码工作同其他地方,包括Windows服务。

但是!

NT服务运行频率为本地服务或您的机器上的网络服务,并根据您的网络设置,该帐户可能没有足够的权限来talkthroiugh像代理intermediareies。我们知道,在我们的几个客户中,IT不允许通过外部代理的机器账户,因此机器账户将无法工作。也就是说,如果通信不起作用,您应该会看到异常,因此您应该仔细检查您的代码并/或者打开WCF跟踪。

Clemens

+0

感谢您的回复。实际上,我发现如果我使用QueueClient.BeginSend方法开始发送消息的异步操作,则失败。如果我只是使用QueueClient.Send方法,它会成功发送消息。我没有找到根本原因,但至少现在起作用了。 –

+0

这很奇怪,因为在封面下是完全相同的代码路径。你打给EndSend了吗? –

+0

是的,我可以分享我的代码片断:'公共无效BeginSendMessage(T消息体) { BrokeredMessage消息=新BrokeredMessage( “测试消息”); message.Properties [“testproperty”] =“测试值”; queueClient.BeginSend(message,new AsyncCallback(SendCompleted),queueClient); } private void SendCompleted(IAsyncResult result) { QueueClient queueClient = result.AsyncState as QueueClient; queueClient.EndSend(result); }' –