WCF错误 - 安全处理器无法在消息中找到安全标头

时间:2010-06-10 11:23:33

标签: c# wcf .net-3.5 wcf-security

我现在看到的WCF服务中出现了安全错误。最初我的错误是关于一个falted状态(使用客户端代理删除以清除此错误),但通过启用跟踪找到了更多信息。

在遇到此错误后,我无法让我的解决方案运行,甚至我的备份副本现在也会出现相同的错误。我不确定是什么导致了这种情况发生,我撤消了我所做的更改(与WCF无关),但仍然得到同样的错误。

跟踪错误是 - System.ServiceModel.Security.MessageSecurityException:安全处理器无法在消息中找到安全标头。这可能是因为消息是不安全的故障,或者因为通信方之间存在绑定不匹配。如果为安全性配置服务且客户端未使用安全性,则会发生这种情况。

我不确定我需要做些什么来解决这个问题,任何帮助都会有用。该申请以前正在运作。

3 个答案:

答案 0 :(得分:7)

尽管绑定不匹配,您可以通过设置

强制WCF工作
  

安全
  enableUnsecuredResponse = “真”

下面是更多可用于与您自己的设置进行比较的代码示例...

<security enableUnsecuredResponse="true"
          authenticationMode="MutualCertificateDuplex"
          defaultAlgorithmSuite="TripleDesRsa15"
          includeTimestamp="false"
          messageSecurityVersion="Default" >
  <issuedTokenParameters defaultMessageSecurityVersion="Default">
    <issuer address="" binding="" bindingConfiguration="">
      <identity>
        <certificateReference storeLocation="CurrentUser"
                              x509FindType="FindBySerialNumber"
                              findValue="0b 8d a9 18 59 65 36 b9 de 65 8b 21 ba 6c ab cc"
                              isChainIncluded="true" />
      </identity>
    </issuer>
  </issuedTokenParameters>
</security>

答案 1 :(得分:7)

如果要避免配置自定义绑定,可以获取对当前basicHttpBinding的引用,从中创建自定义绑定,并包含EnabledUnsecuredResponse属性:

  //client is a reference to your gerenated proxy client class
  var elements = client.Endpoint.Binding.CreateBindingElements();
  elements.Find<SecurityBindingElement>().EnableUnsecuredResponse = true;
  client.Endpoint.Binding = new CustomBinding(elements);

答案 2 :(得分:0)

您可能会发现您的问题与此主题有关:

WCF service errors after installing WindowsXP updates