Adaptor Pengiriman SOAP
Anda menggunakan adaptor pengiriman SOAP untuk memanggil layanan Web. Adaptor pengiriman SOAP membaca konteks pesan pada objek Pesan BizTalk untuk mendapatkan nama proksi dan memanggil proksi layanan Web eksternal terkait.
Adaptor pengiriman SOAP mengautentikasi dengan server tujuan dengan menggunakan salah satu jenis autentikasi berikut:
Anonim. Pengaturan default.
Dasar. Koneksi SOAP mengirimkan nama pengguna dan kata sandi dalam teks biasa.
Mencerna. Koneksi SOAP mengirimkan nama pengguna dan kata sandi dalam format terenkripsi.
Kerberos atau NTLM. Nama pengguna maupun kata sandi tidak dikirim melalui koneksi SOAP. Adaptor SOAP selalu menggunakan kredensial proses di mana adaptor pengiriman SOAP berjalan untuk jenis autentikasi ini.
Selain itu, adaptor pengiriman SOAP dapat menyediakan sertifikat Secure Sockets Layer (SSL) klien ke server Web jika server memerlukan atau menerimanya.
Jika Anda mengaktifkan Enterprise Single Sign-On (SSO), saat adaptor pengiriman SOAP menerima pesan dengan permintaan ke properti SSOTicket , adaptor terhubung ke server SSO untuk memvalidasi dan menukarkan tiket. Setelah adaptor SOAP memvalidasi tiket, itu didekripsi dan kredensial untuk sistem afiliasi diambil dari penyimpanan kredensial. Adaptor SOAP kemudian menggunakan kredensial untuk terhubung ke sistem afiliasi, dan permintaan SOAP diproses.
Adaptor pengiriman SOAP dapat membuat koneksi aman dengan server yang menerima atau memerlukan sertifikat klien. Jika Anda menentukan sertifikat klien, adaptor pengiriman SOAP menggunakan sertifikat saat menyambungkan dengan server yang memerlukan atau menerima sertifikat klien. Jika Anda tidak menentukan sertifikat klien dan server tujuan memerlukan sertifikat klien, adaptor pengiriman SOAP gagal mengirim pesan dan mengikuti logika coba lagi standar.
Adaptor pengiriman SOAP menggunakan sertifikat klien dari penyimpanan Pribadi akun tempat proses BizTalk Server berjalan. Adaptor SOAP menentukan sertifikat dengan thumbprint-nya. Jika adaptor pengiriman SOAP gagal memuat sertifikat karena alasan apa pun, pesan yang dikirim akan ditangguhkan.
Saat pesan berhasil dikirimkan, BizTalk Messaging Engine menerbitkan pesan Pengakuan terkait (ACK) ke database MessageBox jika pemberitahuan pengiriman diaktifkan. Demikian juga, ketika pesan ditangguhkan oleh BizTalk Messaging Engine atau orkestrasi ditangguhkan oleh mesin orkestrasi, BizTalk Server menerbitkan pesan Pengakuan Negatif (NACK) terkait ke MessageBox. Pesan NACK berisi properti konteks dan bagian isi pesan yang terdiri dari kesalahan SOAP. Jika pesan NACK dihasilkan karena transmisi yang gagal dari adaptor HTTP atau SOAP, kesalahan SOAP berisi elemen Header dan elemen Isi respons dari server Web tujuan. Berikut ini adalah contoh kesalahan SOAP dalam NACK yang dihasilkan untuk transmisi SOAP yang gagal:
<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>
Catatan
Elemen Header dan elemen Isi dibatasi hingga 48 KB. Elemen Header dibulatkan ke pasangan nilai header lengkap terdekat tanpa melebihi batas. Elemen Body dipotong menjadi 48 KB.
Catatan
Pesan NACK dan ACK dibuang jika tidak ada langganan yang cocok untuk mereka. Pesan NACK dan ACK tidak ditangguhkan oleh Mesin Olahpesan.
Untuk berlangganan pesan NACK, Anda dapat melakukan salah satu hal berikut:
Buat port kirim dengan filter untuk properti konteks pesan yang sesuai. Lihat Properti Konteks Pesan dalam panduan UI dan referensi namespace API pengembang untuk daftar properti konteks pesan sistem termasuk yang terkait dengan pengakuan pesan.
Kirim dari port orkestrasi yang ditandai dengan Pemberitahuan Pengiriman = Ditransmisikan. Jika port orkestrasi ditandai dengan Pemberitahuan Pengiriman = Ditransmisikan, orkestrasi akan menunggu hingga menerima ACK atau NACK untuk pesan yang dikirimkan. Jika NACK dihasilkan maka akan dirutekan ke orkestrasi dan orkestrasi akan melemparKan DeliveryFailureException. DeliveryFailureException dideserialisasi dari kesalahan SOAP yang terkandung dalam isi pesan NACK. Untuk mengambil string pesan pengecualian dari kesalahan SOAP yang dikembalikan ke orkestrasi, transmisikan DeliveryFailureException ke SoapException lalu akses InnerXml dari bagian Detail SOAP. Sampel kode berikut menunjukkan cara melakukan ini:
// 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
Sampel kode di atas akan mengembalikan fragmen XML yang mirip dengan yang berikut ini:
<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>