2009-08-13 4 views
3

Ich habe eine MSMQ, die Nachrichten im XML-Format aus verschiedenen Quellen empfängt. Ich habe einen WCF-Endpunkt (mit MsmqIntegrationBinding), die ich diese Nachrichten erhalten möchte. I definiert folgendes:Verwenden Sie WCF, um XML-Nachrichten von einer MSMQ-Warteschlange zu empfangen?

[ServiceContract(Namespace = "http://TestApp.MSMQService", ProtectionLevel = ProtectionLevel.None)] 
[ServiceKnownType(typeof(String))] 
public interface IMsmqReceiverService 
{ 
    [OperationContract(IsOneWay = true, Action = "*")] 
    void SubmitQueueMessage(MsmqMessage<String> msg); 
} 

der Hoffnung, dass würde jede XML-Nachricht empfangen, aber es erhält nur Nachrichten formated:

<?xml version="1.0"> 
<string>message</string> 

Aus verschiedenen Gründen, die wir nicht kennen, und wollen nicht wissen, , wäre das Schema der XML-Nachricht ausreichend, um es in einen String zu bekommen. Wie kann ich einen Endpunkt definieren, der XML-Nachrichten mit beliebigen Knoten empfängt, die in der Warteschlange ankommen, unabhängig vom in der Nachricht verwendeten Schema?

Kann ich einen String-Buffer, der den XML-Code einer Nachricht enthält, außerdem in einen MSMQ einfügen, der System.Messaging.MessageQueue.Send verwendet, ohne dass er in zusätzliche XML eingeschlossen wird?

Antwort

1

Ich habe die MSMQ-Integration nicht verwendet, aber versuchen Sie MsmqMessage<XmlElement>.

Bearbeiten Sie XML nicht als Zeichenfolge, wenn Sie möglicherweise helfen können. Verwenden Sie immer eine der vielen XML-APIs.

+0

Danke John, das scheint es bekommen zu haben. Ich möchte nicht das XML manipulieren, möchte nicht einmal das Schema kennen, ich muss es nur aus der Warteschlange ziehen und es weiterleiten, daher dachte ich, ich könnte es als String bekommen und die Deserialisierung vermeiden es. Dies sollte der Job obwohl. Danke noch einmal! –

Verwandte Themen