Teilen über


SOAP-Sendeadapter

Mit dem SOAP-Sendeadapter rufen Sie einen Webdienst auf. Der SOAP-Sendeadapter liest den Nachrichtenkontext zu dem BizTalk-Nachrichtenobjekt, um den Proxynamen abzurufen, und ruft den zugehörigen externen Webdienstproxy auf.

Clientauthentifizierung für den SOAP-Sendeadapter

Der SOAP-Sendeadapter verwendet einen der folgenden Authentifizierungstypen, um sich beim Zielserver zu authentifizieren:

  • Anonym Dies ist die Standardeinstellung.

  • Standard. Die SOAP-Verbindung sendet den Benutzernamen und das Kennwort in reinem Text.

  • Digest. Die SOAP-Verbindung sendet den Benutzernamen und das Kennwort in einem verschlüsselten Format.

  • Kerberos oder NTLM. Es wird weder der Benutzername noch das Kennwort über eine SOAP-Verbindung gesendet. Der SOAP-Adapter verwendet immer die Anmeldeinformationen des Prozesses, unter dem der SOAP-Sendeadapter für diesen Authentifizierungstyp ausgeführt wird.

    Zusätzlich kann der SOAP-Sendeadapter dem Webserver ein SSL-Zertifikat (Secure Sockets Layer) bereitstellen, wenn der Server ein solches Zertifikat erfordert oder akzeptiert.

    Wenn Sie Enterprise Single Sign-On (SSO) aktiviert haben und der SOAP-Sendeadapter eine Nachricht mit der Anforderung an die SSOTicket-Eigenschaft empfängt, stellt der Adapter eine Verbindung mit einem SSO-Server her, um das Ticket zu überprüfen und einzulösen. Sobald der SOAP-Adapter das Ticket überprüft und akzeptiert hat, wird es entschlüsselt, und die Anmeldeinformationen für das Partnersystem werden aus dem Speicher für Anmeldeinformationen abgerufen. Der SOAP-Adapter verwendet die Anmeldeinformationen dann, um eine Verbindung mit dem Partnersystem herzustellen. Anschließend wird die SOAP-Anforderung verarbeitet.

Clientzertifikate für den SOAP-Sendeadapter

Der SOAP-Sendeadapter kann sichere Verbindungen mit Servern herstellen, die Clientzertifikate akzeptieren oder erfordern. Wenn Sie ein Clientzertifikat angeben, verwendet der SOAP-Sendeadapter das Zertifikat, wenn er eine Verbindung mit einem Server herstellt, der Clientzertifikate erfordert oder akzeptiert. Wenn Sie kein Clientzertifikat angeben, der Zielserver aber ein Zertifikat erfordert, kann der SOAP-Sendeadapter die Nachricht nicht senden. Der Adapter geht dann entsprechend der Standardwiederholungslogik vor.

Der SOAP-Sendeadapter verwendet das Clientzertifikat aus dem persönlichen Speicher des Kontos, unter dem der BizTalk Server Prozess ausgeführt wird. Der SOAP-Adapter gibt das Zertifikat durch dessen Fingerabdruck an. Kann der SOAP-Sendeadapter das Zertifikat aus irgendeinem Grund nicht laden, wird die Nachricht, die der Adapter gesendet hat, angehalten.

Negative Bestätigungsnachrichten, die die HTTP- oder SOAP-Adapter bei gescheiterten Übertragungen generieren

Wenn eine Nachricht erfolgreich übertragen wurde, veröffentlicht die BizTalk-Messaging-Engine eine zugehörige Bestätigungsnachricht (Acknowledgement, ACK) in der MessageBox-Datenbank (sofern Zustellungs-/Übermittlungsbenachrichtigung aktiviert ist). Wenn eine Nachricht von der BizTalk-Messaging-Engine angehalten oder eine Orchestrierung von der Orchestrierungs-Engine angehalten wird, veröffentlicht BizTalk Server eine zugeordnete NACK-Nachricht (Negative Bestätigung) in MessageBox. Die NACK-Nachricht enthält Kontexteigenschaften und einen Nachrichtentextteil, der aus einem SOAP-Fehler besteht. Wenn die NACK-Nachricht aufgrund einer fehlgeschlagenen Übertragung vom HTTP- oder SOAP-Adapter generiert wird, enthält der SOAP-Fehler das Headers-Element und das Body-Element der Antwort vom Zielwebserver. Der folgende XML-Text ist ein Beispiel für den SOAP-Fehler (SOAP Fault) in einer NACK, die für eine gescheiterte SOAP-Übertragung generiert wurde:

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">  
   <SOAP:Body>  
      <SOAP:Fault>  
         <faultcode>Microsoft BizTalk Server Negative Acknowledgment</faultcode>   
         <faultstring>An error occurred while processing the message, refer to the details section for more information</faultstring>   
         <faultactor>http://localhost/receivestandard.asp</faultactor>   
         <detail>  
            <ns0:NACK Type="NACK" xmlns:ns0="http://schema.microsoft.com/BizTalk/2003/NACKMessage.xsd">  
            <NAckID>{4E646707-03AA-4493-95C7-A64B09E2987D}</NAckID>  
            <ErrorCode>0x80131600</ErrorCode>  
            <ErrorCategory>0</ErrorCategory>  
            <ErrorDescription>The remote server returned an error: (404) Not Found.</ErrorDescription>  
            <ErrorDetail>  
            <HttpErrorDetail xmlns="http://schema.microsoft.com/BizTalk/2006/HttpErrorDetails.xsd">  
               <Headers>Server: Microsoft-IIS/5.1 Date: Wed, 21 Apr 2005 00:27:47 GMT X-Powered-By: ASP.NET Connection: close Content-Type: text/html Content-Length: 67 </Headers>  
               <Body>We could not locate the page you requested. Please check the URL.</Body>  
            </HttpErrorDetail>  
            </ErrorDetail>  
            </ns0:NACK>  
         </detail>  
      </SOAP:Fault>  
   </SOAP:Body>  
</SOAP:Envelope>  

Hinweis

Das Headers-Element und das Body-Element sind auf 48 KB beschränkt. Das Headers-Element wird auf das nächste vollständige Headerwertpaar gerundet, ohne den Grenzwert zu überschreiten. Das Body-Element wird auf 48 KB abgeschnitten.

Hinweis

NACK- und ACK-Nachrichten werden verworfen, wenn es keine entsprechenden Abonnements für sie gibt. NACK- und ACK-Nachrichten werden nicht von der Messaging-Engine angehalten.

Wenn Sie eine NACK-Nachricht abonnieren möchten, haben Sie folgende Möglichkeiten:

  1. Erstellen Sie einen Sendeport mit einem Filter für die entsprechende Nachrichtenkontexteigenschaft. Eine Liste der Eigenschaften des Systemnachrichtenkontexts , einschließlich der Eigenschaften im Zusammenhang mit der Bestätigung von Nachrichten, finden Sie unter Benutzeroberflächenleitfaden und API-Namespacereferenz für Entwickler .

  2. Senden von einem Orchestrierungsport, der mit Übermittlungsbenachrichtigung = Übertragen gekennzeichnet ist. Wenn ein Orchestrierungsport mit Übermittlungsbenachrichtigung = Übertragen gekennzeichnet ist, wartet die Orchestrierung, bis sie entweder einen ACK oder einen NACK für die übertragene Nachricht empfängt. Wurde eine NACK generiert, wird diese an die Orchestrierung weitergeleitet, und die Orchestrierung löst eine Übermittlungsfehlerausnahme (DeliveryFailureException) aus. Die DeliveryFailureException wird aus dem SOAP-Fehler deserialisiert, der im NACK-Nachrichtentext enthalten ist. Zum Abrufen der Zeichenfolge der Ausnahmenachricht aus dem SOAP-Fehler, der an die Orchestrierung zurückgegeben wurde, wandeln Sie die DeliveryFailureException in eine SOAP-Ausnahme (SoapException) um und greifen dann im SOAP-Abschnitt Detail auf das InnerXml-Element zu. Das folgende Codebeispiel veranschaulicht die dafür erforderliche Vorgehensweise:

    // Cast the DeliveryFailureException to a SoapException…  
    System.Web.Services.Protocols.SoapException se = (System.Web.Services.Protocols.SoapException)e.InnerException;  
    System.Diagnostics.Trace.WriteLine(se.Detail.InnerXml);  
    //e is an Microsoft.XLANGs.BaseTypes.DeliveryFailureException  
    //object type created in an Exception handler  
    

    In diesem Codebeispiel wird ein XML-Fragment zurückgegeben, das dem folgenden Fragment ähnelt:

    <ns0:NACK Type="NACK" xmlns:ns0="http://schema.microsoft.com/BizTalk/2003/NACKMessage.xsd">  
    <NAckID>{4E646707-03AA-4493-95C7-A64B09E2987D}</NAckID>  
    <ErrorCode>0x80131600</ErrorCode>  
    <ErrorCategory>0</ErrorCategory>  
    <ErrorDescription>The remote server returned an error: (404) Not Found.</ErrorDescription>  
    <ErrorDetail>  
    <HttpErrorDetail xmlns="http://schema.microsoft.com/BizTalk/2006/HttpErrorDetails.xsd">  
       <Headers>Server: Microsoft-IIS/5.1 Date: Wed, 21 Apr 2005 00:27:47 GMT X-Powered-By: ASP.NET Connection: close Content-Type: text/html Content-Length: 67 </Headers>  
       <Body>We could not locate the page you requested. Please check the URL.</Body>  
    </HttpErrorDetail>  
    </ErrorDetail>  
    </ns0:NACK>  
    

Weitere Informationen

Was ist der SOAP-Adapter?
Sicherheitsempfehlungen für den SOAP-Adapter