2014-03-31 5 views
1

나는 customBindingnetTcpBinding을 변환하려합니다. 내가 실행할 때, 다음과 같은 예외가 발생했습니다netTcpBinding을 customBinding으로 변환하는 방법?

<customBinding> 
    <binding name="CustomDuplexBinding" sendTimeout="00:00:30"> 
     <transactionFlow /> 
     <reliableSession ordered="true"/> 
     <security authenticationMode="UserNameForCertificate" enableUnsecuredResponse="true"> 
     <secureConversationBootstrap authenticationMode="UserNameForCertificate" /> 
     </security> 
     <compositeDuplex /> 
     <oneWay /> 
     <binaryMessageEncoding> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
         maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/> 
     </binaryMessageEncoding> 
     <sslStreamSecurity requireClientCertificate="false"/> 
     <tcpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/> 
    </binding> 
</customBinding> 

:

바인딩 나는 CustomDuplexBinding을 만든

<netTcpBinding> 
    <binding name="DuplexBinding" sendTimeout="00:00:30" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/> 
     <reliableSession enabled="true" ordered="true"/> 
     <security mode="Message"> 
     <message clientCredentialType="UserName"/> 
     </security>      
    </binding> 
</netTcpBinding> 

:

여기 netTcpBinding 구성입니다 'CustomDuplexBind ing '은 채널 유형 생성을 지원하지 않습니다. 이 종종 CustomBinding에서 BindingElements이 잘못이나 잘못된 순서로 적층 된 것을 나타냅니다. 스택 하단에 전송 장치가 필요합니다 ( ). BindingElements의 권장 순서는 다음과 같습니다 TransactionFlow, ReliableSession, 보안, CompositeDuplex, 편도, StreamSecurity, MessageEncoding, 운송.

사람이이 문제를 좀 도와 주시겠습니까? 오류 메시지에서

+0

''와''의 순서를 바꿔 보았는가? – Tim

+0

주문을 전환하려했는데 예외가 발생했습니다. "_In Binding 'CustomBinding', TransportBindingElement 'TcpTransportBindingElement'가 BindingElementCollection의 마지막에 나타나지 않습니다 .TransportBindingElement가 last_가되도록 요소의 순서를 변경하십시오." – Dmitriy

답변

0

은 : <sslStreamSecurity>에 의해 <<binaryMessageEncoding>을 따라 "... StreamSecurity, MessageEncoding ..."당신의 바인딩 congifuration에서

, 당신은있다.

  • 트랜잭션 흐름
  • 신뢰할 수있는 세션
  • 보안
  • 복합 양면
  • :

    MSDN에 Custom Bindings
    <sslStreamSecurity requireClientCertificate="false"/> 
    <binaryMessageEncoding> 
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
           maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
           maxNameTableCharCount="2147483647"/> 
    </binaryMessageEncoding> 
    

    가, 다음은 필요한 순서입니다 : 이러한 전환해야

  • 일방향
  • 01 23,516,
  • 스트림 보안
  • 메시지 인코딩
  • 운송

마지막 두 (메시지 인코딩 및 전송) 필요합니다; 나머지는 선택 사항입니다.

+0

몇 가지 조합을 시도했지만 결과가 없습니다. 필요한 순서가 제대로 작동하지 않았습니다. 보안 요소를 제거하고 서비스가 성공적으로 시작되었습니다. 나는 보안 문제가 무엇인지 모르겠다. 도와 주셔서 감사합니다! – Dmitriy

1

나는이 같은 문제가되고있다. 스트림 보안 및 메시지 인코딩 요소는 원래 게시물에 거꾸로 있지만 올바른 순서 일 때도 동일한 오류가 발생합니다. 나를 위해, 문제는 authenticationMode가 보안 요소에 사용되었다. 내 nettcp 보안 요소는 원래 포스터 (UserName 인증을 사용한 메시지 보안)와 동일합니다. 이것을 사용했다 :

<security authenticationMode="SecureConversation"> 
    <secureConversationBootstrap authenticationMode="UserNameForSslNegotiated" /> 
</security>