从WF TransactionScope调用WCF的ProtocolException

| 我收到一个SOAP异常消息: \“此消息的收件人不理解来自名称空间\'http://schemas.microsoft.com/ws/2006/02/tx/oletx \'的标头\'OleTxTransaction \',导致该消息的接收者该错误通常表明此消息的发送者已启用接收者无法处理的通信协议。请确保客户端绑定的配置与服务的绑定一致。 该方法定义为(默认情况下具有TransactionFlowOption.NotAllowed):
[OperationContract]  
Foo GetFoo(int fooId);
相同服务中的其他方法定义如下:
[OperationContract]  
[TransactionFlowOption.Allowed]  
Foo GetFooTransactional(int fooId);
第一个将在WF TransactionScope活动中调用时引发异常,但从带有TransactionScope的常规控制台应用程序中调用时则不会引发异常。 无论如何,第二种方法都可以。我可以在每种方法中都允许事务,但是出于几个原因,我不想这样做。 我正在使用命名管道绑定,以允许客户端和服务器中的事务流。 服务器:
<netNamedPipeBinding>
    <binding transactionFlow=\"true\" transactionProtocol=\"OleTransactions\" transferMode=\"Buffered\" maxBufferSize=\"2147483647\" maxReceivedMessageSize=\"2147483647\" />
</netNamedPipeBinding>
客户:
<netNamedPipeBinding>
    <binding name=\"DefaultNamedPipeConfig\" closeTimeout=\"00:01:00\"
          openTimeout=\"00:01:00\" receiveTimeout=\"00:10:00\" sendTimeout=\"00:01:00\"
          transactionFlow=\"true\" transferMode=\"Buffered\" transactionProtocol=\"OleTransactions\"
          hostNameComparisonMode=\"StrongWildcard\" maxBufferPoolSize=\"524288\"
          maxBufferSize=\"65536\" maxConnections=\"10\" maxReceivedMessageSize=\"65536\">
         <readerQuotas maxDepth=\"32\" maxStringContentLength=\"8192\" maxArrayLength=\"16384\"
            maxBytesPerRead=\"4096\" maxNameTableCharCount=\"16384\" />
         <security mode=\"Transport\">
             <transport protectionLevel=\"EncryptAndSign\" />
         </security>
     </binding>
  </netNamedPipeBinding>
    
已邀请:
        这似乎是4.0版本中的错误     
        我将服务器和客户端更新为.Net4.6.2,并且错误消失了。 服务器从.Net 4.0更新到4.5后,错误出现在我的开发中。 我认为大部分时间都是.Net版本,但当然也可以是配置问题。在我必须更新服务器之前,我的软件运行良好,因为DLL已更新为.Net 4.5。 祝好运     

要回复问题请先登录注册