定義一種安全、可靠且可互通的綁定方式,適用於雙工服務合約或透過 SOAP 中介進行通訊。
<組態>
<system.service模型>
<裝訂>
<wsDualHttpBinding>
語法
<wsDualHttpBinding>
<binding name="String"
closeTimeout="TimeSpan"
openTimeout="TimeSpan"
receiveTimeout="TimeSpan"
sendTimeout="TimeSpan"
bypassProxyOnLocal="Boolean"
clientBaseAddress="URI"
transactionFlow="Boolean"
hostNameComparisonMode="StrongWildCard/Exact/WeakWildcard"
maxBufferPoolSize="integer"
maxReceivedMessageSize="Integer"
messageEncoding="Text/Mtom"
proxyAddress="URI"
textEncoding="Unicode/BigEndianUnicode/UTF8"
useDefaultWebProxy="Boolean">
<reliableSession ordered="Boolean"
inactivityTimeout="TimeSpan" />
<security mode="None/Message">
<message clientCredentialType="None/Windows/UserName/Certificate/CardSpace"
negotiateServiceCredential="Boolean"
algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15" />
</security>
<readerQuotas maxArrayLength="Integer"
maxBytesPerRead="Integer"
maxDepth="Integer"
maxNameTableCharCount="Integer"
maxStringContentLength="Integer" />
</binding>
</wsDualHttpBinding>
屬性和項目
下列各節說明屬性、子元素和父元素
Attributes
| Attribute | Description |
|---|---|
| 繞過代理本地 | 一個布林值,指示是否要繞過代理伺服器取得本地位址。 預設值為 false。 |
| clientBaseAddress | 一個 URI,用來設定用戶端接收服務回應訊息的基底位址。 若有指定,該位址(加上每個通道的 GUID)會用於監聽。 若未指定該值,客戶基址將以傳輸特定方式產生。 預設值為 null。 |
| 結束 時間 | 一個 TimeSpan 指定緊密操作完成所需時間間隔的值。 此值應大於或等 Zero於 。 預設值是 00:01:00。 |
| hostnameComparisonMode | 指定用於解析 URI 的 HTTP 主機名稱比較模式。 此屬性的型別 HostNameComparisonMode為 ,表示在 URI 匹配時是否使用主機名稱來存取服務。 預設值為 StrongWildcard,忽略了配對中的主機名稱。 |
| maxBufferPoolSize | 一個整數,指定此綁定的最大緩衝池大小。 預設為 524,288 位元組(512 × 1024)。 Windows 通訊基礎(WCF)的許多部分都使用緩衝區。 每次使用緩衝區都建立與銷毀成本高昂,緩衝區的垃圾回收也同樣昂貴。 使用緩衝池時,你可以從緩衝池中取一個緩衝區,使用完畢後再歸還給池。 因此避免了建立與銷毀緩衝區的開銷。 |
| 最大接收訊息大小 | 一個正整數,指定在設定此綁定的通道上可接收的最大訊息大小(以位元組計,包括標頭)。 超過此限制的訊息發送者將收到 SOAP 錯誤。 接收端會丟棄訊息,並在追蹤日誌中建立事件的條目。 預設是 65536。 |
| messageEncoding | 定義用於編碼訊息的編碼器。 有效的數值包括以下幾項: - 文字:使用簡訊編碼器。 - MTOM:使用訊息傳輸組織機制 1.0(MTOM)編碼器。 - 預設為文字。 此屬性的類型 WSMessageEncoding為 。 |
| 名稱 | 一個包含綁定設定名稱的字串。 這個值應該是唯一的,因為它是用來識別裝訂的。 從 .NET Framework 4 開始,綁定和行為不再需要名稱。 欲了解更多關於預設設定及無名綁定與行為的資訊,請參閱簡化設定與簡化配置(Simplified Configuration for WCF Services)。 |
| openTimeout | 一個 TimeSpan 指定開啟操作完成所需時間區間的值。 此值應大於或等 Zero於 。 預設值是 00:01:00。 |
| proxyAddress | 一個指定 HTTP 代理位址的 URI。 若 useDefaultWebProxy , true則此設定必須為 null。 預設值為 null。 |
| 收到Timeout | 一個 TimeSpan 指定接收操作完成所需時間區間的值。 此值應大於或等 Zero於 。 預設值是 00:01:00。 |
| sendTimeout | 一個 TimeSpan 指定傳送操作完成所需時間間隔的值。 此值應大於或等 Zero於 。 預設值是 00:01:00。 |
| 文字編碼 | 設定字元集編碼用於綁定上的訊息輸出。 有效的數值包括以下幾項: - BigEndian Unicode:Unicode BigEndian 編碼。 - Unicode:16位元編碼。 - UTF8:8位元編碼 預設是 UTF8。 此屬性的類型 Encoding為 。 |
| transactionFlow | 一個布林值,指定綁定是否支援流動的 WS-Transactions。 預設值為 false。 |
| useDefaultWebProxy | 一個布林值,表示系統自動設定的 HTTP 代理是否被使用。 若此屬性為 null,代理位址必須是true(即非設定)。 預設值為 true。 |
子專案
| 元素 | Description |
|---|---|
| <安全> | 定義綁定的安全設定。 此元素的類型 WSDualHttpSecurityElement為 。 |
| <讀者配額> | 定義了由端點可處理的 SOAP 訊息複雜度的限制,這些訊息可由配置為此綁定的端點所能處理。 此元素的類型 XmlDictionaryReaderQuotasElement為 。 |
| <可靠會話> | 規定通道端點間是否建立可靠的會話。 |
父項目
| 元素 | Description |
|---|---|
| <裝訂> | 此元素包含標準與自訂裝訂的集合。 |
備註
該協定 WSDualHttpBinding 提供與 相同的 Web Service 協定 WSHttpBinding支援,但用於雙工合約。
WSDualHttpBinding 僅支援 SOAP 安全性,且需要可靠的訊息傳遞。 此綁定要求用戶端擁有一個公開 URI,該 URI 為服務提供回調端點。 這由 clientBaseAddress 屬性提供。 雙重綁定會將用戶端的 IP 位址暴露給服務。 用戶端應使用安全性,確保只連接它信任的服務。
此綁定可透過一個或多個 SOAP 中介可靠通訊。
預設情況下,此綁定會產生一個執行時堆疊,包含 WS-ReliableMessaging 以確保可靠性、WS-Security 用於訊息安全與認證、HTTP 用於訊息傳遞,以及文字/XML 訊息編碼。
Example
<configuration>
<system.ServiceModel>
<bindings>
<wsDualHttpBinding>
<binding closeTimeout="00:00:10"
openTimeout="00:00:20"
receiveTimeout="00:00:30"
sendTimeout="00:00:40"
bypassProxyOnLocal="false"
clientBaseAddress="http://localhost:8001/client/"
transactionFlow="true"
hostNameComparisonMode="WeakWildcard"
maxReceivedMessageSize="1000"
messageEncoding="Mtom"
proxyAddress="http://foo/bar"
textEncoding="utf-16"
useDefaultWebProxy="false">
<reliableSession ordered="false"
inactivityTimeout="00:02:00" />
<security mode="None">
<message clientCredentialType="None"
negotiateServiceCredential="false"
algorithmSuite="Aes128" />
</security>
</binding>
</wsDualHttpBinding>
</bindings>
</system.ServiceModel>
</configuration>