2012-05-14 89 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); }' –