<customBinding>

Memberikan kontrol penuh atas tumpukan pesan untuk pengguna.

<konfigurasi>
  <system.serviceModel>
    <mengikat>
      <customBinding>

Sintaks

<customBinding>
  <binding name="String"
           closeTimeout="TimeSpan"
           openTimeout="TimeSpan"
           receiveTimeout="TimeSpan"
           sendTimeout="TimeSpan">
    <compositeDuplex clientBaseAddress="Uri" />
    <reliableSession acknowledgementInterval="TimeSpan"
                     advancedFlowControl="Boolean"
                     bufferedMessagesQuota="Integer"
                     inactivityTimeout="TimeSpan"
                     maxPendingChannels="Integer"
                     maxRetryCount="Integer"
                     ordered="Boolean" />
    <pnrpPeerResolver />
    <windowsStreamSecurity protectionLevel="None/Sign/EncryptAndSign" />
    <sslStreamSecurity requireClientCertificate="Boolean" />
    <transactionFlow transactionProtocol="OleTransactions/WSAtomicTransactionOctober2004" />
    <security defaultAlgorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
              authenticationMode="UserNameForAnonymous"
              contextMode="Cookie"
              defaultProtectionLevel="Sign"
              enableKeyDerivation="false"
              keyEntropyMode="ClientEntropy"
              messageProtectionOrder="SignBeforeEncryptAndEncryptSignature"
              securityVersion="WSSecurityXXX2005">
      <localClientSettings cacheCookies="false"
                           detectReplays="false"
                           maxCookieCachingTime="00:07:24" />
      <localServiceSettings replayCacheSize="9"
                            maxClockSkew="00:00:03"
                            replayWindow="00:07:22.2190000" />
    </security>
    <binaryMessageEncoding maxReadPoolSize="Integer"
                           maxWritePoolSize="Integer"
                           maxSessionSize="Integer" />
    <httpsTransport manualAddressing="Boolean"
                    maxMessageSize="Integer"
                    authenticationScheme="Negotiate"
                    bypassProxyOnLocal="Boolean"
                    hostNameComparisonMode="Exact"
                    mapAddressingHeadersToHttpHeaders="Boolean"
                    proxyaddress="Uri"
                    realm="String"
                    requireClientCertificate="Boolean" />
    <peerTransport manualAddressing="false"
                   maxMessageSize="20002"
                   listenIPAddress="202.10.1.9"
                   messageAuthentication="false"
                   peerNodeAuthenticationMode="None"
                   port="1000" />
    <security defaultAlgorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
              authenticationMode="UserNameForAnonymous"
              bootstrapBindingConfiguration="String"
              bootstrapBindingSectionName="String"
              defaultProtectionLevel="None/Sign/EncryptAndSign"
              requireDerivedKeys="Boolean"
              securityHeaderLayout="Strict/Lax/LaxTimestampFirst/LaxTimestampLast"
              includeTimestamp="Boolean"
              keyEntropyMode="ClientEntropy/ServerEntropy/CombinedEntropy"
              messageProtectionOrder="SignBeforeEncrypt/SignBeforeEncryptAndEncryptSignature/EncryptBeforeSign"
              protectTokens="Boolean"
              requireSecurityContextCancellation="Boolean"
              securityVersion=" WSSecurityJan2004/WSSecurityXXX2005"
              requireSignatureConfirmation="Boolean">
      <localClientSettings cacheCookies="Boolean"
                           detectReplays="Boolean"
                           replayCacheSize="Integer"
                           maxClockSkew="TimeSpan"
                           maxCookieCachingTime="TimeSpan"
                           replayWindow="TimeSpan"
                           sessionKeyRenewalInterval="TimeSpan"
                           sessionKeyRolloverInterval="TimeSpan"
                           reconnectOnTransportFailure="Boolean"
                           timestampValidityDuration="TimeSpan"
                           cookieRenewalThresholdPercentage="Integer" />
      <localServiceSettings detectReplays="Boolean"
                            issuedCookieLifeTime="TimeSpan"
                            maxStatefulNegotiations="Integer"
                            replayCacheSize="Integer"
                            maxClockSkew="TimeSpan"
                            negotiationTimeout="TimeSpan"
                            replayWindow="TimeSpan"
                            inactivityTimeout="TimeSpan"
                            sessionKeyRenewalInterval="TimeSpan"
                            sessionKeyRolloverInterval="TimeSpan"
                            reconnectOnTransportFailure="Boolean"
                            maxConcurrentSessions="Integer"
                            timestampValidityDuration="TimeSpan" />
      <federationParameters trustVersion="WSTrustApr2004/WSTrustFeb2005" />
    </security>
    <security defaultAlgorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
              authenticationMode="UserNameForAnonymous"
              bootstrapBindingConfiguration="String"
              bootstrapBindingSectionName="String"
              defaultProtectionLevel="None/Sign/EncryptAndSign"
              requireDerivedKeys="Boolean"
              securityHeaderLayout="Strict/Lax/LaxTimestampFirst/LaxTimestampLast"
              includeTimestamp="Boolean"
              keyEntropyMode="ClientEntropy/ServerEntropy/CombinedEntropy"
              messageProtectionOrder="SignBeforeEncrypt/SignBeforeEncryptAndEncryptSignature/EncryptBeforeSign"
              protectTokens="Boolean"
              requireSecurityContextCancellation="Boolean"
              securityVersion=" WSSecurityJan2004/WSSecurityXXX2005"
              requireSignatureConfirmation="Boolean" >
      <localClientSettings cacheCookies="Boolean"
                           detectReplays="Boolean"
                           replayCacheSize="Integer"
                           maxClockSkew="TimeSpan"
                           maxCookieCachingTime="TimeSpan"
                           replayWindow="TimeSpan"
                           sessionKeyRenewalInterval="TimeSpan"
                           sessionKeyRolloverInterval="TimeSpan"
                           reconnectOnTransportFailure="Boolean"
                           timestampValidityDuration="TimeSpan"
                           cookieRenewalThresholdPercentage="Integer" />
      <localServiceSettings detectReplays="Boolean"
                           issuedCookieLifeTime="TimeSpan"
                           maxStatefulNegotiations="Integer"
                           replayCacheSize="Integer"
                           maxClockSkew="TimeSpan"
                           negotiationTimeout="TimeSpan"
                           replayWindow="TimeSpan"
                           inactivityTimeout="TimeSpan"
                           sessionKeyRenewalInterval="TimeSpan"
                           sessionKeyRolloverInterval="TimeSpan"
                           reconnectOnTransportFailure="Boolean"
                           maxConcurrentSessions="Integer"
                           timestampValidityDuration="TimeSpan" />
      <federationParameters trustVersion="WSTrustApr2004/WSTrustFeb2005" />
      <genericIssuedTokenParameters>
        <localIssuerIssuedTokenParameters keyType="SymmetricKey/PublicKey"
                                          keySize="Integer"
                                          tokenType="String" />
        <issuedTokenParametersEndpointAddress address="URI"
                                              bindingConfiguration="String"
                                              binding="String" />
        <issuedTokenClient localIssuerChannelBehaviors="String"
                           cacheIssuedTokens="Boolean"
                           maxIssuedTokenCachingTime="TimeSpan"
                           keyEntropyMode="ClientEntropy/ServerEntropy/CombinedEntropy" />
        <issuedTokenClientBehavior issuerAddress="String"
                                   behaviorConfiguration="String" />
        <issuedTokenClientBehavior address="URI"
                                   bindingConfiguration="String"
                                   binding="String" />
      </genericIssuedTokenParameters>
    </security>
  </binding>
</customBinding>

Atribut dan Elemen

Bagian berikut menjelaskan atribut, elemen anak, dan elemen induk

Atribut

Atribut Deskripsi
closeTimeout Nilai TimeSpan yang menentukan interval waktu yang disediakan untuk menyelesaikan operasi tertutup. Nilai ini harus lebih besar dari atau sama dengan Zero. Defaultnya adalah 00:01:00.
nama String yang berisi nama konfigurasi pengikatan. Nilai ini adalah string yang ditentukan pengguna yang bertindak sebagai string identifikasi untuk pengikatan kustom. Mulai dari .NET Framework 4, pengikatan dan perilaku tidak perlu memiliki nama. Untuk informasi selengkapnya tentang konfigurasi default dan pengikatan serta perilaku tanpa nama, lihat Konfigurasi yang Disederhanakan dan Konfigurasi yang Disederhanakan untuk Layanan WCF.
openTimeout Nilai TimeSpan yang menentukan interval waktu yang disediakan untuk menyelesaikan operasi terbuka. Nilai ini harus lebih besar dari atau sama dengan Zero. Defaultnya adalah 00:01:00.
receiveTimeout Nilai TimeSpan yang menentukan interval waktu yang disediakan untuk menyelesaikan operasi penerimaan. Nilai ini harus lebih besar dari atau sama dengan Zero. Defaultnya adalah 00:01:00.
sendTimeout Nilai TimeSpan yang menentukan interval waktu yang disediakan untuk menyelesaikan operasi pengiriman. Nilai ini harus lebih besar dari atau sama dengan Zero. Defaultnya adalah 00:01:00.

Elemen Anak

Elemen Deskripsi
<compositeDuplex> Menentukan pesan dua arah ke pengikatan kustom. Ini digunakan dengan transportasi yang tidak mengizinkan komunikasi dupleks secara asli, misalnya, HTTP. TCP, sebaliknya, memungkinkan komunikasi dupleks secara asli, dan tidak memerlukan penggunaan elemen pengikat ini untuk layanan guna mengirim pesan kembali ke klien.

Klien harus mengekspos alamat untuk layanan untuk melakukan kontak dan membuat koneksi. Alamat klien ini disediakan oleh atribut ClientBaseAddress.

Elemen ini berjenis CompositeDuplexElement.
<pnrpPeerResolver> Menentukan penyelesai nama serekan dari Peer Name Resolution Protocol (PNRP). Elemen ini berjenis PnrpPeerResolverElement.
<reliableSession> Menentukan pengaturan untuk WS-Reliable Messaging. Saat elemen ini ditambahkan ke pengikatan kustom, saluran yang dihasilkan dapat mendukung jaminan pengiriman tepat satu kali. Elemen ini berjenis ReliableSessionElement.
<keamanan> Menentukan opsi untuk keamanan pengikatan kustom. Elemen ini berjenis SecurityElement.
<sslStreamSecurity> Menentukan pengaturan keamanan untuk pengikatan aliran SSL. Elemen ini berjenis SslStreamSecurityElement.
<transactionFlow> Menentukan bahwa pengikatan mendukung alur transaksi, dan protokol yang akan digunakan oleh atribut transactionProtocol. Elemen ini berjenis TransactionFlowElement.
<windowsStreamSecurity> Menentukan opsi untuk keamanan streaming dari pengikatan kustom. Elemen ini berjenis WindowsStreamSecurityElement.

Elemen Induk

Elemen Deskripsi
mengikat Berisi semua pengikatan untuk aplikasi Windows Communication Foundation.

Keterangan

Pengikatan kustom memberikan kontrol penuh atas tumpukan pesan WCF. Pengikatan kustom dapat dibuat dengan menambahkan elemen konfigurasi untuk entitas tertentu. Misalnya, pengguna dapat menggabungkan bagian httpsTransport, bagian reliableSession, dan bagian security untuk membuat pengikatan berbasis https yang andal dan aman.

Pengikatan individu mendefinisikan tumpukan pesan dengan menentukan elemen konfigurasi untuk elemen tumpukan dalam urutan kemunculannya di tumpukan. Setiap elemen mendefinisikan dan mengonfigurasi satu elemen dari tumpukan. Harus ada satu dan hanya satu elemen transportasi di setiap pengikatan kustom. Tanpa elemen ini, tumpukan pesan tidak lengkap.

Urutan elemen yang muncul di tumpukan sangatlah penting, karena urutan operasi diterapkan pada pesan. Urutan elemen tumpukan yang disarankan adalah sebagai berikut:

  1. Transaksi (opsional)

  2. Olahpesan yang Andal (opsional)

  3. Keamanan (opsional)

  4. Transportasi

  5. Encoder (opsional)

Gunakan pengikatan kustom jika salah satu pengikatan yang disediakan sistem tidak memenuhi persyaratan layanan Anda. Pengikatan kustom dapat digunakan, misalnya, untuk mengaktifkan penggunaan transportasi baru atau encoder baru di titik akhir layanan.

Pengikatan kustom dibuat menggunakan salah satu CustomBinding dari kumpulan elemen pengikatan yang "ditumpuk" dalam urutan tertentu:

Tabel berikut merangkum opsi untuk setiap lapisan.

Lapisan Opsi Diperlukan
Alur Transaksi TransactionFlowBindingElement Tidak
Keandalan ReliableSessionBindingElement Tidak
Keamanan Simetris, Asimetris, Tingkat Transportasi Tidak
Perubahan Bentuk CompositeDuplexBindingElement Tidak
Peningkatan Transportasi Aliran SSL, aliran Windows, Penyelesai Serekan Tidak
Pengodean Teks, Biner, MTOM, Kustom Ya
Transportasi TCP, Pipa yang Dinamai, HTTP, HTTPS, rasa MSMQ, Kustom Ya

Selain itu, Anda dapat menentukan elemen pengikat Anda sendiri dan menyisipkannya di antara salah satu lapisan yang ditentukan sebelumnya.

Untuk diskusi tentang cara menggunakan pengikatan kustom guna mengubah pengikatan yang disediakan sistem, lihat Cara: Menyesuaikan Pengikatan yang Disediakan Sistem.

Lihat juga