2009-07-20 91 views
0

我創建了一個WCF服務來向MSMQ發送消息,我可以讓它運行並且它看起來像消息已發送,但在查看隊列時它不在那裏。我已驗證,隊列不是事務性隊列。安全性是開放的,以便每個人都可以發送消息,但我想知道是否有其他地方可以設置安全性?這是我使用的代碼。使用WCF服務將消息發送到MSMQ

Dim mq As MessageQueue 
Dim msg As Message 
Dim queueName As String = "webdevbvm.labsafety.com\emailsubscriptions" 

Try 
    msg = New Message("Test") 
    msg.Priority = MessagePriority.Highest 

    If (MessageQueue.Exists(queueName)) Then 
     mq = New MessageQueue(queueName) 
    msg.ResponseQueue = mq 
    msg.UseJournalQueue = True 
    msg.Label = "Test Message" 
    msg.Body = "This is only a test" 
    mq.Send(msg) 
    Console.WriteLine("Message sent.") 
    End If 
Catch ex As MessageQueueException 
    Console.WriteLine("MSMQ Error: " + ex.ToString()) 
Catch ex As Exception 
    Console.WriteLine("Error: " + ex.ToString()) 
Finally 
    mq.Close() 
End Try 

我沒有得到任何錯誤,但是我確實在運行程序的機器上看到了我的傳出隊列中的消息。它顯示隊列存在,如果我將隊列名稱更改爲不存在的隊列名稱,它不會進入IF語句,所以我知道它正在看隊列而不是發送文件。如果有幫助,我在筆記本電腦上本地運行程序,它發送的隊列也在Windows 2003服務器上。

+0

您是否看到「發送的消息」。從你的console.writeline命令? – 2009-07-20 19:13:05

+0

如果隊列不存在會發生什麼? ru-roh ......繁榮。 (psst:添加一個檢查來創建隊列,如果它不存在或將其作爲錯誤處理)。 – 2009-07-29 05:19:34

+0

刪除了WCF相關標籤 – SteveC 2010-07-06 16:41:10

回答

1

感謝馬克您的答覆,但我想通了什麼需要做。基本上我使用錯誤的隊列名稱。我在隊列名稱前沒有「FormatName:DIRECT = OS:」。一旦我說了這是很好的去。再次感謝。

Robert

2

這看起來並不像一個WCF服務,我 - 好像你正在使用的基礎System.Net.Messaging API發送郵件到您的隊列....

檢查出一些這些鏈接,看看如何使用WCF將消息發送到MSMQ:

馬克