2010-12-15 115 views
0

我有一個與MSMQ交談的WCF服務。當我在VS2010的服務測試客戶端界面中運行服務時,它可以將消息放置在適當的隊列中,並且一切都很好。當我在IIS7中託管WCF服務並從我的Web應用程序調用服務時,所有消息都進入事務性死信隊列。WCF和MSMQ在IIS問題中託管

我設置了應用程序池和站點(託管WCF服務的站點),我知道這些標識具有對隊列的特定訪問權限。

有什麼我可以檢查或我做錯了嗎?

更新: 嗯,我認爲還有其他事情正在發生。我創建了一個超級簡單的服務,可以讀取隊列中的數據並進行寫入。我只是需要深入挖掘並找出答案。感謝所有擁有相貌的人,但我會保持這種態度,以便我可以回報,或者如果有人可能有其他想法。我知道很難確定沒有查看任何代碼,但很難發佈,因爲我有很多東西需要拆分。

+0

如果解釋配置,這將有所幫助。例如,WCF託管機器的本地MSMQ?如果不是,哪個MSMQ有死信的消息? – 2010-12-15 21:15:21

+0

是的,WCF服務與MSMQ位於同一臺機器上。我將事務性死信隊列指定爲消息正在發送的隊列。隊列被設置爲非事務性的,並且消息被設置爲非事務性的。 – DDiVita 2010-12-15 21:54:00

+0

在代碼中用什麼樣的命名來命名隊列?你可以張貼(掩蓋真正的名字與一般的東西,但保持確切的格式)。對問題的描述表明隊列被視爲遠程隊列,MSMQ無法找到遠程隊列,從而在事務性的死信隊列中傳遞消息。 – 2010-12-15 22:53:32

回答

0

結果發現編碼隊列的人沒有正確設置隊列。

0

在代碼或客戶端app.config文件中設置ExactlyOnce = false。

這樣

NetMsmqBinding binding = new NetMsmqBinding(NetMsmqSecurityMode.None); 
binding.ExactlyOnce = false; 

希望這將解決這個問題。

乾杯 Naushad