1

我设置了一个 WCF-WSHttp 发送端口并选中了启用事务,并且在发送消息时出现以下错误:

The header 'CoordinationContext' from the namespace 'http://schemas.xmlsoap.org/ws/2004/10/wscoor' was not understood by the recipient of this message, causing the message to not be processed.  This error typically indicates that the sender of this message has enabled a communication protocol that the receiver cannot process.  Please ensure that the configuration of the client's binding is consistent with the service's binding. 

如果我取消选中 Enable Transactions 框,则消息已成功处理。任何人都可以帮助我使用事务支持来解决这个问题吗?

这是来自服务的 web.config 的绑定信息(transactionFlow 设置为 true):

<bindings>
      <wsHttpBinding>
        <binding name="serviceBinding" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            bypassProxyOnLocal="false" transactionFlow="true" hostNameComparisonMode="StrongWildcard"
            maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
            messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
            allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
              enabled="false" />
          <security mode="Transport">
            <transport clientCredentialType="Ntlm" proxyCredentialType="None"
                realm="" />
            <message clientCredentialType="Windows" negotiateServiceCredential="true"
                establishSecurityContext="true" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>

提前致谢!

4

2 回答 2

0

这可能是 MSDTC 设置的问题,请参阅http://msdn.microsoft.com/en-us/library/ms752261.aspx

还要检查事件日志中与 MSDTC 相关的错误。

于 2010-12-07T20:37:43.910 回答
0

原来问题出在服务本身。尽管使用 transactionFlow="true" 正确配置了绑定,但服务合约缺少以下属性以明确允许事务:

[System.ServiceModel.TransactionFlowAttribute(System.ServiceModel.TransactionFlowOption.Allowed)]
于 2010-12-16T14:40:03.237 回答