Überlegungen beim Nutzen von Webdiensten
Dieser Abschnitt enthält Informationen, die Sie beim Nutzen von Webdiensten beachten sollten.
Verwenden von zwei Unterstrichzeichen in einem Parameternamen
Parameternamen für Webmethoden dürfen nicht mit „__“ (zwei Unterstrichzeichen) beginnen. Mit zwei Unterstrichzeichen beginnende Namen können zur Erstellung von Webnachrichtenteilen führen, die von XLANG/s nicht unterstützt werden (nicht verwendet werden können).
Keine Unterstützung für „any“-Element" und „anyAttribute“-Attribut in Webmethoden
Sie können kein Element oder keinAttribute-Attribut im Schema für eine Webmethode verwenden.
Verwenden von XLANG/s-Schlüsselwörtern
Ein Webdienstname oder ein Webmethodenname darf kein Schlüsselwort (keyword) in einer XLANG/s sein. Wenn Sie einen XLANG/s-Schlüsselwort (keyword) im Webdienstnamen oder Webmethodennamen verwenden, wird beim Hinzufügen des Webdiensts ein Kompilierungsfehler angezeigt. Eine Liste der reservierten Wörter für die XLANG/s-Sprache finden Sie unter XLANG-s Reservierte Wörter.
Erforderliche XLANG/s-Unterstützung für Parametertypen
Wenn Sie von XLANG/s nicht unterstützte Parametertypen für Webmethoden verwenden, treten Kompilierungsfehler auf. So unterstützt BizTalk Server beispielsweise keine Parameter, die aus einem eindimensionalen Array von Schematypen bestehen. Außerdem unterstützt BizTalk Server keine mehrdimensionalen Arrays. Eine Liste der Wörter, die in der XLANG/s-Sprache in BizTalk Server reserviert werden, finden Sie unter Reservierte Wörter in XLANG-s.
Vermeiden von durch Hinzufügen von Webverweisen mit C#-Schlüsselwörtern oder -Bezeichnern verursachten Kompilierungsfehlern
Wenn Sie den Dienstverweis hinzufügen verwenden, um Dienstverweise zu BizTalk-Projekten hinzuzufügen, konvertiert BizTalk Server die Schematypen, die zum Aufrufen der einzelnen Webmethoden erforderlich sind, in Schemas. BizTalk Server fügt reference.xsd diese Schemas hinzu. Wenn Ihre Schemas Elementnamen enthalten, die C#-Schlüsselwörter sind oder der Elementname als C#-Bezeichner nicht gültig ist, erhalten Sie möglicherweise einen Laufzeitfehler. Stellen Sie zur Vermeidung von Laufzeitfehlern sicher, dass der genutzte Webdienst keine Elementnamen enthält, bei denen es sich um C#-Schlüsselwörter oder ungültige C#-Bezeichner handelt.
Keine Unterstützung für mehrere Dienst-/Porttypdefinitionen
BizTalk Server unterstützt das Hinzufügen einer Webdienstdatei mit einer einzigen Dienst- und Porttypdefinition. Wenn Sie eine WSDL-Datei mit mehreren Dienst- oder Porttypdefinitionen hinzufügen, wird u. U. folgender Fehler ausgegeben:
Es konnten keine BizTalk-Dateien generiert werden. Objektverweis nicht auf eine Instanz eines Objekts festgelegt.
Unterstützung für die Nutzung von Arrays, die von Webdiensten verfügbar gemacht werden
BizTalk Server kann eindimensionale und verzweigte Arrays nutzen, die von Webdiensten verfügbar gemacht werden, bei denen es nicht nicht um BizTalk-Webdienste handelt. Weitere Informationen zum Nutzen von Webdienstarrays finden Sie unter Verwenden von Webdienstarrays.
Hinweis
Mehrdimensionale Arraysyntax wird nicht unterstützt. Beispiel: MyArray[1,5]
.
Hinweis
BizTalk Server unterstützt nicht die Verwendung eines Arrays von DataSet-Objekten, die von einem Webdienst verfügbar gemacht werden. Der XLANG/s-Subdienst bietet systemeigene Unterstützung für die DataSet-Klasse aus .NET, wenn Sie jedoch ein BizTalk-Projekt erstellen, das einen Webverweis auf einen Webdienst enthält, durch den ein Array von DataSet-Objekten aus .NET verfügbar gemacht wird, treten beim Kompilieren des Projekts Fehler auf.
Webmethodenparameter müssen XML-serialisierbar sein
Alle Parameter in einem genutzten Webdienst müssen XML-serialisierbar sein. Wenn Sie eine Webmethode mit einem nicht XML-serialisierbaren Parameter hinzufügen, wird u. U. folgende Fehlermeldung ausgegeben:
„System.Xml.Element“ muss XML-serialisierbar sein, um ein Nachrichtenteiltyp sein zu können.
Hinweis
Die Datentypen XmlDocument und DataSet werden zwar nicht xml serialisierbar, aber nicht unterstützt.
Nutzen von Webdiensten in einem reinen Nachrichtenübermittlungsszenario
Beim Nutzen von Webdiensten in einem reinen Nachrichtenübermittlungsszenario müssen alle Namen von BizTalk-Nachrichtentextteilen mit den Parameternamen für Webmethoden übereinstimmen. Wenn die Signatur des Webdiensts beispielsweise lautet WebMethod(MyType1 type1, MyType2 type2)
, muss der Teilename type1 und type2 sein, erhalten Sie möglicherweise den folgenden Laufzeitfehler:
Fehler beim Abrufen des Nachrichtenteils für den Parameter „%1“.
Weitere Informationen finden Sie unter Verwenden von Webdiensten in einem Szenario mit nur Messaging.
Programmgesteuertes Konfigurieren eines SOAP-Sendeports
Konfigurationseigenschaften können programmgesteuert im Nachrichtenkontext festgelegt werden. Sie können diese Eigenschaften in einer Orchestrierung oder einer benutzerdefinierten Pipelinekomponente unabhängig davon festlegen, ob der Sendeport statisch oder dynamisch ist.
Hinweis
Um die MethodName-Eigenschaft für den statischen SOAP-Sendeport programmgesteuert zu konfigurieren, müssen Sie den Methodennamen auf der Registerkarte Webdienst des Dialogfelds SOAP-Transporteigenschaften in der BizTalk Server-Verwaltungskonsole auf [Später angeben] festlegen.
Weitere Informationen zur MethodName-Eigenschaft finden Sie unter Dynamisches Festlegen des URI eines verbrauchten Webdiensts.
Weitere Informationen zum Dialogfeld SOAP-Transporteigenschaften finden Sie im Dialogfeld SOAP-Transporteigenschaften, Registerkarte Webdienst in der Referenz zu Benutzeroberflächenanleitungen und Entwickler-API-Namespaces.
Regeln für Eigenschaften
Wenn eine Konfigurationseigenschaft in einer Orchestrierung oder in einer benutzerdefinierten Pipelinekomponente in einer Empfangspipeline festgelegt wird, gelten folgende Regeln:
Wenn eine Nachricht an einen statischen Sendeport gesendet wird, wird der Eigenschaftenwert durch den für diesen Sendeport konfigurierten Wert überschrieben.
Wenn eine Nachricht an einen dynamischen Sendeport gesendet wird, wird der Eigenschaftenwert nicht überschrieben.
Wenn eine Konfigurationseigenschaft in einer benutzerdefinierten Pipelinekomponente in einer Sendepipeline festgelegt wird, gilt folgende Regel:
Der Eigenschaftenwert wird unabhängig davon nicht überschrieben, ob die Nachricht an einen statischen oder einen dynamischen Sendeport gesendet wird. Sendepipelinekomponenten überschreiben also die Konfigurationseigenschaft unabhängig davon, wo sie festgelegt wurde.
Weitere Informationen zu benutzerdefinierten Pipelinekomponenten finden Sie unter Entwickeln benutzerdefinierter Pipelinekomponenten.
Weitere Informationen zu den Konfigurationseigenschaften des SOAP-Sendeadapters finden Sie unter Dynamisches Festlegen des URI eines verbrauchten Webdiensts.
Das Hinzufügen eines Webverweises auf einen genutzten Webdienst, der ein Schema mit mehreren Stammelementen enthält, verursacht einen Kompilierungsfehler
Wenn Sie dem Projekt einen Webverweis auf einen Webdienst hinzufügen, der von einer veröffentlichten BizTalk-Orchestrierung abgeleitet wurde, und die Orchestrierung ein Schema mit mehreren Stammelementen enthält, tritt beim Kompilieren des Projekts ein Fehler auf. Wenn Sie dem Projekt einen Webverweis hinzufügen, der von einer veröffentlichten BizTalk-Orchestrierung abgeleitet wurde, darf die Orchestrierung keine Schemas mit mehreren Stammelementen enthalten.
Verwenden von „TypedDataSets“ als Parameter für Webmethoden
Damit die Verwendung von TypedDataSets als Parameter für Webmethoden unterstützt wird, müssen Sie die folgenden Schritte ausführen:
Fügen Sie den Webverweis einem C#-Projekt hinzu, und generieren Sie dann den Proxy.
Erstellen Sie einen SOAP-Sendeport, geben Sie den Proxy für den Sendeport an, und wählen Sie die Methode aus.
Definieren Sie in der Orchestrierung einen spät gebundenen Port, und definieren Sie die Nachrichtentypen. In den meisten Fällen, in denen keine Eigenschaftsaufstufung oder ein Distinguished Field-Zugriff erforderlich ist, kann der Typ als XMLDocument definiert werden. Wählen Sie bei diesem Typ Pass-Through-Pipelines aus.
Geben Sie in BizTalk Server Verwaltungskonsole auf der Registerkarte Webdienst im Dialogfeld SOAP-Transporteigenschaften des SOAP-Sendeports an, dass Sie den erstellten Proxy verwenden möchten. Außerdem müssen Sie Assembly, Typ und Methode angeben. Weitere Informationen finden Sie im Dialogfeld SOAP-Transporteigenschaften, Registerkarte Webdienst in der Referenz zu Benutzeroberflächenanleitungen und ENTWICKLER-API-Namespaces.
Das Hinzufügen eines Webverweises auf einen genutzten Webdienst mit einer Webmethode, die generisch basierte Parameter erwartet, verursacht einen Kompilierungsfehler
Wenn Sie dem Projekt einen Webverweis auf einen Webdienst mit einer Webmethode hinzufügen, die generisch basierte Parameter erwartet, z. B. Parameter, die NULL-Werte zulassen, tritt beim Kompilieren des Projekts ein Fehler auf. Dieser Vorgang wird nicht unterstützt. Sie müssen die explizite Spezialisierung verwenden, um die generische Klasse in XLANG/s aufrufen zu können.
BizTalk-Schemagenerierung mit „Dienstverweis hinzufügen“
Wenn Sie den Dienstverweis hinzufügen verwenden, um Dienstverweise zu BizTalk-Projekten hinzuzufügen, konvertiert BizTalk Server die Schematypen, die zum Aufrufen der einzelnen Webmethoden erforderlich sind, in Schemas. BizTalk Server fügt reference.xsd diese Schemas hinzu. Um sicherzustellen, dass der Dienstverweis hinzufügen die BizTalk-Schemas ordnungsgemäß generiert, müssen die Webdienste den folgenden Richtlinien entsprechen:
Webmethoden sollten soapDocumentMethodAttribute anstelle von SoapRpcMethodAttribute aufweisen.
Webdienste und -methoden müssen die Literalbindung anstelle von Codiert verwenden, z. B. [SoapDocumentMethod(Use=SoapBindingUse.Literal)].
Webmethodenparameter und Rückgabetypen müssen Über XmlRootAttribute mit einer gültigen Namespace-Eigenschaft verfügen, es sei denn, es handelt sich um native XSD-Typen und den XmlNode-Typ.
Webmethoden dürfen die Eigenschaften RequestNamespace und ResponseNamespace in SoapDocumentMethodAttribute nicht verwenden.
Webdienste müssen mit WSI Basic Profile (Web Services Interoperability) Version 1.1 konform sein.
XSD enthält keine Knoten für einfache Parametertypen
Wenn Sie einen Webverweis hinzufügen und die Webmethode einen Parameter aufweist, bei dem es sich um einen einfachen Typ handelt, enthält die generierte XSD keine Knoten für diesen Parameter. Stattdessen enthält die mehrteilige Nachricht, die generiert wird, einen Teil, der den einfachen Typ aufweist. Dieser Nachrichtenteil sollte von der Orchestrierung entsprechend verarbeitet werden. Wenn es sich um einen Teil der Anforderung an den Webdienst handelt, weisen Sie dem Teil den Wert mithilfe einer Form vom Typ Nachrichtenzuweisung manuell zu. Handelt es sich um einen Teil der Antwort vom Webdienst, greifen Sie in einer Form vom Typ Ausdruck manuell auf den Teil zu, um den Wert anzuzeigen.
Keine Unterstützung für das WSDL-Importelement (Web Services Description Language) bei „Dienstverweis hinzufügen“
Bei „Dienstverweis hinzufügen“ tritt ein Fehler auf, wenn Sie Dienstverweise für die WSDL-Datei mit dem Importelement hinzufügen.