将ASMX WSE迁移到WCF:动作'http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT'无效或未被识别

时间:2018-10-09 17:33:16

标签: c# wcf asmx wse

我有一个带有WSE3.0的asmx Web服务,我正在尝试根据我发现的here

的URL迁移到WCF。

这是原始的WSE策略配置:

<policies xmlns="http://schemas.microsoft.com/wse/2005/06/policy">
<extensions>
    <extension name="mutualCertificate11Security" type="Microsoft.Web.Services3.Design.MutualCertificate11Assertion, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <extension name="x509" type="Microsoft.Web.Services3.Design.X509TokenProvider, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <extension name="requireActionHeader" type="Microsoft.Web.Services3.Design.RequireActionHeaderAssertion, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</extensions>
<policy name="x509">
    <mutualCertificate11Security establishSecurityContext="true" renewExpiredSecurityContext="true" requireSignatureConfirmation="true" messageProtectionOrder="SignBeforeEncrypt" requireDerivedKeys="false" ttlInSeconds="300">
        <serviceToken>
             <x509 storeLocation="CurrentUser" storeName="My" findValue="WCfServer" findType="FindBySubjectName" />
        </serviceToken>
        <protection>
            <request signatureOptions="IncludeAddressing, IncludeTimestamp, IncludeSoapBody" encryptBody="true" />
            <response signatureOptions="IncludeAddressing, IncludeTimestamp, IncludeSoapBody" encryptBody="true" />
            <fault signatureOptions="IncludeAddressing, IncludeTimestamp, IncludeSoapBody" encryptBody="false" />
        </protection>
    </mutualCertificate11Security>
    <requireActionHeader />
</policy>

这是Web.Config中WCF的配置:

  <system.serviceModel>
<services>
  <service behaviorConfiguration="ServiceBehavior"  name="ServiceDemo">
    <endpoint address=""
        binding="customBinding" bindingConfiguration="ServiceDemoConf" 
        contract="IServiceDemo" >        
    </endpoint>
  <host>
    <baseAddresses>
      <add baseAddress="http://localhost:47037/"/>
    </baseAddresses>
  </host>
  </service>
</services>
<bindings>
  <customBinding>
    <binding name="ServiceDemoConf">          
    <security authenticationMode="MutualCertificate" 
              canRenewSecurityContextToken="true"
                 requireSignatureConfirmation="true" 
                 messageProtectionOrder="SignBeforeEncrypt"  
                 messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11"
                 requireDerivedKeys="false" >
      </security>
      <textMessageEncoding messageVersion ="Soap11WSAddressingAugust2004" >
      </textMessageEncoding>
      <httpTransport />
    </binding>
  </customBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior" >
      <serviceCredentials>
        <serviceCertificate findValue="WCfServer"
                            storeLocation="CurrentUser"
                            storeName="My"
                            x509FindType="FindBySubjectName" />
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

但是,当我尝试使用测试客户端测试WCF服务时,它会引发以下错误:

  

由于该操作无法处理该消息   “ http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT”无效或   无法识别。

我想知道WCF服务是否必须在WCF配置中包括或删除任何参数。

预先感谢

0 个答案:

没有答案