Миграция ASMX WSE в WCF: действие 'http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT' недопустимо или не распознано - PullRequest
0 голосов
/ 09 октября 2018

У меня есть веб-сервис asmx с WSE3.0, и я пытаюсь перейти на WCF на основе этого URL, который я нашел здесь

Это исходная конфигурация политики 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>

И это конфигурация WCF в Web.Config:

  <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.

Заранее спасибо

...