我收到一个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>
答案 0 :(得分:0)
答案 1 :(得分:0)
我将服务器和客户端更新为.Net4.6.2并且错误魔术消失了。 服务器从.Net 4.0更新到4.5后,错误出现在我的开发中。 我认为这大部分时间都是.Net版本,但当然也可以是配置问题。在我必须更新服务器之前,我的软件工作正常,因为DLL已更新为.Net 4.5。
好运