2008-12-17 28 views
1

我正在使用WCF(C#)從工作組模式下的Windows Server 2003下的專用MSMQ隊列發送/接收消息。在工作組模式下將新消息發佈到專用隊列時WCF服務從未得到通知

客戶端WCF /服務WCF和MSMQ在同一臺計算機上。

有一個客戶端發送消息到私人隊列,完美的作品。有一個服務從同一個專用隊列接收消息,但該服務似乎永遠不會被MSMQ調用。 (沒有錯誤發生)

消息堆積在隊列中,但沒有東西拉出。在另一臺計算機上(域模式而不是工作組模式)消息被完美地發送和接收。

工作組模式導致MSMQ永遠不會調用我的服務的問題是什麼?

後,我寫了一個C#的測試,總是同一臺計算機上,但這次我創建的MessageQueue和訂閱ReceiveCompleted事件是這樣的:

MessageQueue MQueue = new MessageQueue(".\\private$\\nameofmyqueue"); 
MQueue.MessageReadPropertyFilter.SetAll(); 
MQueue.ReceiveCompleted += MessageEventHandler; 
Message Msg = MQueue.Receive(); 

我收到來自MSMQ隊列中的事件,當有新郵件現在。

我認爲我的服務配置(WFC配置)或我的命名空間預留有問題。

+0

有關信息: 應該由Windows服務託管的MSMQ調用的服務。 當我嘗試由控制檯應用程序託管的相同的東西... – fred 2008-12-18 13:50:59

回答

0

我發現我的問題在哪裏。事實上,我使用了一個調用SQL Server 2005過程的事務服務。

爲了使用SQL 2005的事務綁定,過程的執行在事務範圍內進行。

如果拋出異常並且未捕獲到,DTC用於回滾過程。我的問題是DTC /遠程客戶端連接未在我的服務器上激活。

因此,要麼您應該激活DTC /遠程客戶端連接,要麼您不使用事務範圍。

如果你想使用DTC和遠程客戶機連接,遠程客戶端連接必須之前被激活,因爲激活DTC和服務器的遠程客戶機連接原因重啓。

相關問題