2009-07-20 18 views
0

Ich habe einen WCF-Dienst erstellt, um eine Nachricht an einen MSMQ zu senden. Ich kann ihn ausführen und es sieht so aus, als ob die Nachricht gesendet wurde. Ich habe überprüft und die Warteschlange ist keine Transaktionswarteschlange. Die Sicherheit ist offen, so dass jeder Nachrichten senden kann, aber ich frage mich, ob es andere Orte gibt, an denen Sicherheit eingerichtet werden kann? Hier ist mein Code, den ich benutze.Senden von Nachrichten an MSMQ mit einem WCF-Dienst

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 

Ich bekomme keine Fehler, aber ich sehe die Nachrichten in meiner ausgehenden Warteschlange von der Maschine, auf dem das Programm ausgeführt wird. Es zeigt an, dass die Queue existiert und wenn ich den Queue-Namen in einen nicht existierenden Queue-Namen ändere, geht es nicht in die IF-Anweisung, daher weiß ich, dass die Queue die Datei gerade nicht sendet. Wenn es hilft, führe ich das Programm lokal auf einem Laptop aus und die Warteschlange, die es sendet, ist auch auf einem Windows 2003 Server.

+0

Sehen Sie die "Nachricht gesendet." von Ihrem console.writeline Befehl? –

+0

Was passiert, wenn die Warteschlange nicht existiert? Ru-Ro ...... Boom. (psst: füge ein Häkchen ein, um die Queue zu erstellen, falls sie nicht existiert Oder handle das als Fehler). –

+0

Entfernte WCF-bezogene Tags – SteveC

Antwort

1

Dank Trester für Ihre Antwort, aber ich herausgefunden, was getan werden musste. Grundsätzlich habe ich den falschen Warteschlangennamen verwendet. Ich hatte nicht "FormatName: DIRECT = OS:" vor dem Namen der Warteschlange. Sobald ich es gesagt habe, war es gut zu gehen. Danke noch einmal.

Robert

+0

Robert, wenn das die Antwort ist, dann solltest du es als Antwort akzeptieren. –

+0

Wir haben leider vergessen, es zu akzeptieren. Danke für die Erinnerung. – Robert

2

Das ist nicht wie ein WCF-Dienst mir sieht - scheint, dass Sie die Basis System.Net.Messaging API verwenden Nachricht an die Warteschlange zu senden ....

prüfen einige dieser Link, um zu sehen, wie zu bedienen WCF-Nachrichten an MSMQ senden:

Marc

+0

korrekt, aber dies wird in einem wcf-Service gemacht – Robert

+2

Warum würde ein WCF-Dienst eine Nachricht direkt in MSMQ fallen lassen? –

+1

warum nicht gesendet aus dem WCF-Service ** mit ** WCF ?? –

Verwandte Themen