2017-06-19 65 views
0

我试图连接到具有下列配置的WCF服务:如何使用WSAddressing连接到WCF服务?

<wsp:Policy wsu:Id="WSHttpBinding_IService_policy"> 
    <wsp:ExactlyOne> 
     <wsp:All> 
      <wsoma:OptimizedMimeSerialization xmlns:wsoma="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization"/> 
      <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
       <wsp:Policy> 
        <sp:TransportToken> 
         <wsp:Policy> 
          <sp:HttpsToken RequireClientCertificate="false"/> 
         </wsp:Policy> 
        </sp:TransportToken> 
        <sp:AlgorithmSuite> 
         <wsp:Policy> 
          <sp:Basic256/> 
         </wsp:Policy> 
        </sp:AlgorithmSuite> 
        <sp:Layout> 
         <wsp:Policy> 
          <sp:Strict/> 
         </wsp:Policy> 
        </sp:Layout> 
        <sp:IncludeTimestamp/> 
       </wsp:Policy> 
      </sp:TransportBinding> 
      <sp:EndorsingSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
       <wsp:Policy> 
        <sp:SecureConversationToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"> 
         <wsp:Policy> 
          <sp:BootstrapPolicy> 
           <wsp:Policy> 
            <sp:SignedParts> 
             <sp:Body/> 
             <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/> 
             <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/> 
             <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/> 
             <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/> 
             <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/> 
             <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/> 
             <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/> 
            </sp:SignedParts> 
            <sp:EncryptedParts> 
             <sp:Body/> 
            </sp:EncryptedParts> 
            <sp:TransportBinding> 
             <wsp:Policy> 
              <sp:TransportToken> 
               <wsp:Policy> 
                <sp:HttpsToken RequireClientCertificate="false"/> 
               </wsp:Policy> 
              </sp:TransportToken> 
              <sp:AlgorithmSuite> 
               <wsp:Policy> 
                <sp:Basic256/> 
               </wsp:Policy> 
              </sp:AlgorithmSuite> 
              <sp:Layout> 
               <wsp:Policy> 
                <sp:Strict/> 
               </wsp:Policy> 
              </sp:Layout> 
              <sp:IncludeTimestamp/> 
             </wsp:Policy> 
            </sp:TransportBinding> 
            <sp:SignedSupportingTokens> 
             <wsp:Policy> 
              <sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"> 
               <wsp:Policy> 
                <sp:WssUsernameToken10/> 
               </wsp:Policy> 
              </sp:UsernameToken> 
             </wsp:Policy> 
            </sp:SignedSupportingTokens> 
            <sp:Wss11> 
             <wsp:Policy/> 
            </sp:Wss11> 
            <sp:Trust10> 
             <wsp:Policy> 
              <sp:MustSupportIssuedTokens/> 
              <sp:RequireClientEntropy/> 
              <sp:RequireServerEntropy/> 
             </wsp:Policy> 
            </sp:Trust10> 
           </wsp:Policy> 
          </sp:BootstrapPolicy> 
         </wsp:Policy> 
        </sp:SecureConversationToken> 
       </wsp:Policy> 
      </sp:EndorsingSupportingTokens> 
      <sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
       <wsp:Policy/> 
      </sp:Wss11> 
      <sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
       <wsp:Policy> 
        <sp:MustSupportIssuedTokens/> 
        <sp:RequireClientEntropy/> 
        <sp:RequireServerEntropy/> 
       </wsp:Policy> 
      </sp:Trust10> 
      <wsaw:UsingAddressing/> 
     </wsp:All> 
    </wsp:ExactlyOne> 
</wsp:Policy> 
<wsdl:types> 

我试图连接,但该服务将返回以下错误:

System.ServiceModel.Security.MessageSecurityException: Incorrectly unprotected or unprotected error received on the other side. For the error code and further details, see Internal FaultException. ---> System.ServiceModel.FaultException: Unable to validate one or more security tokens in the message.

回答

0

我解决了这个问题。

事实上,他们已将错误信息通知我,因为代码是正确的,但您必须提供服务可识别的凭据。

我平凡的解决了这个如下:

try 
{ 
       var c = new Services.ServiceClient(); 

       c.ClientCredentials.UserName.UserName = "[email protected]"; 
       c.ClientCredentials.UserName.Password= "pass"; 

       Result ra = c.CheckCode("123"); 

       if (ra.State == MessageStatusType.OK) 
       { 
        tbText.Text = "Connection ok: " + ra.TextState; 
       } 
       else 
       { 
        tbText.Text = "Connection ko: " + ra.TextState; 
       } 
} 
catch (Exception ex) 
{ 
    tbText.Text = ex.ToString(); 
}