2011-03-03 61 views
1

我創建了一個自定義綁定來替換之前使用的wsHttpBinding,以便我可以設置maxClockSkew設置(http://blog.salamandersoft.co.uk/index.php/2009/01/wcf-wshttpbinding-and-clock-skew/)。綁定在web.config中創建,而不是在代碼中創建。無法在web.config中引用WCF CustomBinding

但我不知道如何告訴我的服務使用此綁定。

這裏是我的綁定:

<customBinding> 
    <binding name="myWSHttpBinding"> 
     <transactionFlow transactionProtocol="WSAtomicTransactionOctober2004" /> 
     <security defaultAlgorithmSuite="Default" authenticationMode="SecureConversation" 
      requireDerivedKeys="true" securityHeaderLayout="Strict" includeTimestamp="true" 
      keyEntropyMode="CombinedEntropy" messageProtectionOrder="SignBeforeEncryptAndEncryptSignature" 
      messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" 
      requireSecurityContextCancellation="true" requireSignatureConfirmation="false"> 
     <localClientSettings cacheCookies="true" detectReplays="true" 
      replayCacheSize="900000" maxClockSkew="00:05:00" maxCookieCachingTime="Infinite" 
      replayWindow="00:05:00" sessionKeyRenewalInterval="10:00:00" 
      sessionKeyRolloverInterval="00:05:00" reconnectTransportOnFailure="false" 
      timestampValidityDuration="00:05:00" cookieRenewalThresholdPercentage="60" /> 
     <localServiceSettings detectReplays="true" issuedCookieLifetime="10:00:00" 
      maxStatefulNegotiations="128" replayCacheSize="900000" maxClockSkew="00:05:00" 
      negotiationTimeout="00:01:00" replayWindow="00:05:00" inactivityTimeout="00:02:00" 
      sessionKeyRenewalInterval="15:00:00" sessionKeyRolloverInterval="00:05:00" 
      reconnectTransportOnFailure="false" maxPendingSessions="128" 
      maxCachedCookies="1000" timestampValidityDuration="00:05:00" /> 
     <secureConversationBootstrap defaultAlgorithmSuite="Default" 
      authenticationMode="UserNameForSslNegotiated" requireDerivedKeys="true" 
      securityHeaderLayout="Strict" includeTimestamp="true" keyEntropyMode="CombinedEntropy" 
      messageProtectionOrder="SignBeforeEncryptAndEncryptSignature" 
      messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" 
      requireSecurityContextCancellation="true" requireSignatureConfirmation="false"> 
      <localClientSettings cacheCookies="true" detectReplays="true" 
       replayCacheSize="900000" maxClockSkew="00:05:00" maxCookieCachingTime="Infinite" 
       replayWindow="00:05:00" sessionKeyRenewalInterval="10:00:00" 
       sessionKeyRolloverInterval="00:05:00" reconnectTransportOnFailure="true" 
       timestampValidityDuration="00:05:00" cookieRenewalThresholdPercentage="60" /> 
      <localServiceSettings detectReplays="true" issuedCookieLifetime="00:15:00" 
       maxStatefulNegotiations="128" replayCacheSize="900000" maxClockSkew="00:05:00" 
       negotiationTimeout="00:01:00" replayWindow="00:05:00" inactivityTimeout="00:02:00" 
       sessionKeyRenewalInterval="15:00:00" sessionKeyRolloverInterval="00:05:00" 
       reconnectTransportOnFailure="true" maxPendingSessions="128" 
       maxCachedCookies="1000" timestampValidityDuration="00:05:00" /> 
     </secureConversationBootstrap> 
     </security> 
     <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" 
      messageVersion="Default" writeEncoding="utf-8"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
      maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     </textMessageEncoding> 
     <httpTransport manualAddressing="false" maxBufferPoolSize="2147483647" 
      maxReceivedMessageSize="2147483647" allowCookies="false" authenticationScheme="Anonymous" 
      bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard" 
      keepAliveEnabled="true" maxBufferSize="2147483647" proxyAuthenticationScheme="Anonymous" 
      realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" 
      useDefaultWebProxy="true" /> 
    </binding> 
    </customBinding> 

回答

2

簡單地引用您的名字使用服務的endpoint元素bindingConfiguration屬性綁定。

3
<endpoint address="" binding="customBinding" bindingConfiguration="myWSHttpBinding" 
     contract="IYourService" />