2009-08-06 13 views
0

Der FaultContract von meinem WCF-Dienst hat keine Datenvertragsmitglieder; Wenn der Dienst in BizTalk konsumiert wird, zeigt das generierte Schema daher keine Mitglieder an. Wie handhabe ich in BizTalk?FaultException-Behandlung in BizTalk

Bei der Verwendung dieses WCF-Diensts von einem .NET-Client stellt die Implementierung die Ausnahme zusammen mit der Klassenbibliothek (der Datenobjekte) bereit, und ich erhalte den Fehler dieses Ausnahmetyps.

Antwort

0

Ich bin mir nicht sicher, ob das möglich ist. Damit es funktioniert, muss BizTalk Zugriff auf die DLL mit Ihren Datenobjekten haben. Sie könnten versuchen, die DLL aus Ihrem BizTalk-Projekt zu referenzieren.

+0

Ich kann BizTalk beziehen diese Baugruppe haben. Wollen Sie mich bitte weiter zur Implementierung führen ... wie binde ich die Fehlerausnahme (Port) an diesen Ausnahmetyp/Schema? – Muralidhar

0

Wenn Sie den Dienst von einer Orchestrierung verbrauchen könnten Sie die folgenden Schritte versuchen:

  1. eine XSD-Darstellung Ihrer FaultContract das Projekt hinzufügen und diese als Nachrichtentyp auf Fehler Betrieb verwenden .

  2. einen Exception-Handler-Block Fügen Sie die Orchestrierung mit dieser Störung Betrieb als Nachrichtentyp

  3. Auf dem Zwei-Wege-WCF Sendport auf die Registerkarte Nachrichten zu gehen und dann auf ‚Inbound BizTalk Message Body‘ Ändern Sie den Radiobutton in Pfad.

  4. On 'Body Wegausdruck' hinzufügen etwas wie folgt aus:

    /* [namespace-uri() = 'http://myservice.namespace/'] |/* [Local-name() = 'Fehler']/* [local-name() 'Detail' =]/*

Diese beiden XPaths getrennt durch ein '|' Je nachdem, was es erhält, wird der Adapter entweder die richtige Serviceantwort oder den Inhalt des Detailknotens, an dem WCF FaultContract platziert ist, veröffentlichen. Dadurch kann der Disassembler arbeiten, wenn er versucht, die Nachricht zu identifizieren.

Ein Nebeneffekt davon ist, dass Sie ein Problem beim Auffangen von SOAP-Fehlern in der Orchestrierung haben. Dies wird jedoch durch Erstellen einer Schemadarstellung eines SOAP-Fehlers (http://schemas.datacontract.org/2004/07/System.ServiceModel#ExceptionDetail) gelöst und als zweite Fehleroperation verwendet.

0

Ich habe Problem gefunden. Unser Webservice gibt Fehler-XML in Kleinbuchstaben zurück. So richtig XPath ist

/*[local-name()='Fault']/*[local-name()='detail']/* 
+0

Dies ist eigentlich ein Unterschied zwischen SOAP 1.1 und SOAP 1.2 –