2011-03-25 85 views
0

我有一個silverlight應用程序,它調用一些WCF服務。爲銀色輕客戶端的典型綁定看起來是這樣的:Silverlight WCF安全與自定義綁定

<basicHttpBinding> 
    <binding name="ClientBindingName" maxBufferSize="2147483647" 
     maxReceivedMessageSize="2147483647"> 
     <security mode="TransportCredentialOnly" /> 
    </binding> 
</basicHttpBinding> 

而這與服務器綁定這樣的配對:

<basicHttpBinding> 
    <binding name="ServerbindingName" sendTimeout="00:02:00"> 
     <security mode="TransportCredentialOnly"> 
      <transport clientCredentialType="Windows"/> 
     </security>      
    </binding> 
</basicHttpBinding> 

對於服務之一,我需要一個自定義綁定,但我無法找到不會導致403錯誤的綁定組合。

我能想出的客戶是最好的:

<customBinding> 
    <binding name="CustomBinding_IZipService_StreamedResponse" closeTimeout="00:10:00" 
      openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"> 
     <binaryMessageEncoding /> 
     <httpTransport maxReceivedMessageSize="2147483647" 
         maxBufferSize="2147483647" 
         transferMode="StreamedResponse" /> 
    </binding> 
</customBinding> 

和服務:

<customBinding> 
    <binding name="FS.SUV.Services.ZipService.customBinding" 
      receiveTimeout="00:10:00" sendTimeout="00:10:00"> 
     <binaryMessageEncoding> 
     <readerQuotas maxStringContentLength="524288000"/> 
     </binaryMessageEncoding> 
     <httpTransport transferMode="StreamedResponse" 
        maxBufferSize="524288000" 
        maxBufferPoolSize="524288000" 
        maxReceivedMessageSize="524288000" /> 
     <security authenticationMode="SecureConversation" requireSecurityContextCancellation="true"> 
     <secureConversationBootstrap authenticationMode="UserNameOverTransport" /> 
     </security> 
    </binding> 
    </customBinding> 

我怎樣才能自定義綁定發揮好使用Silverlight在windows身份驗證?

回答

1

您的配置不正確。試試這兩邊(並根據需要修改讀卡器配額和郵件大小限制):

<customBinding> 
    <binding name="CustomBinding_IZipService_StreamedResponse" closeTimeout="00:10:00" 
      openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"> 
     <binaryMessageEncoding /> 
     <httpTransport authenticationMode="Negotiate" 
         maxReceivedMessageSize="2147483647" 
         maxBufferSize="2147483647" 
         transferMode="StreamedResponse" /> 
    </binding> 
</customBinding> 
2

事實證明,我試圖過於複雜。該客戶端綁定細等保持原樣:

<binding name="CustomBinding_IZipService_StreamedResponse" closeTimeout="00:10:00" 
     openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"> 
    <binaryMessageEncoding /> 
    <httpTransport maxReceivedMessageSize="2147483647" 
        maxBufferSize="2147483647" 
        transferMode="StreamedResponse" /> 
</binding> 

和服務器綁定需要設置是這樣的:

<customBinding> 
    <binding name="ClientBindingName" 
      receiveTimeout="00:10:00" sendTimeout="00:10:00"> 
     <binaryMessageEncoding> 
      <readerQuotas maxStringContentLength="524288000"/> 
     </binaryMessageEncoding> 
     <httpTransport transferMode="StreamedResponse" 
         maxBufferSize="524288000" 
         maxBufferPoolSize="524288000" 
         maxReceivedMessageSize="524288000" 
         authenticationScheme="Negotiate" /> 
    </binding> 
</customBinding> 

我設法通過使用工具的這根得到正確的結合:http://webservices20.cloudapp.net/default.aspx

+0

是的,因爲您的初始配置沒有使用傳輸身份驗證,而是使用了Silverlight不支持的安全上下文進行消息身份驗證。 – 2011-03-25 11:39:06