Я разрабатываю службу wcf для дуплексного канала, используя пользовательскую привязку. В настоящее время, когда я компилирую библиотеку классов, я получаю следующую ошибку:
Режим передачи в потоковом режиме отсутствует
поддерживается
ReliableSessionBindingElement.
Ниже мой App.config:
<service behaviorConfiguration="transferServiceBehavior"
name="API.FileTransfer.FileTransferService">
<endpoint address="json"
behaviorConfiguration="WebHttpEPBehavior"
binding="webHttpBinding"
bindingConfiguration="jsonWeb"
name="MyJSONFileTransferEP"
contract="API.FileTransfer.IJSONFileTransferService" />
<endpoint address="pox"
behaviorConfiguration="WebHttpEPBehavior"
binding="webHttpBinding"
bindingConfiguration="poxWeb"
name="MyPOXFileTransferEP"
contract="API.FileTransfer.IPOXFileTransferService" />
<endpoint address="soap"
behaviorConfiguration="NetTcpEPBehavior"
binding="netTcpBinding"
bindingConfiguration="netTcpWeb"
name="MySOAPFileTransferEP"
contract="API.FileTransfer.ISOAPFileTransferService" />
<endpoint address="mex"
binding="mexTcpBinding"
bindingConfiguration=""
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:2544/filetransfer/" />
<add baseAddress="net.tcp://localhost:2544/filetransfer/" />
</baseAddresses>
</host>
</service>
Ошибка, которую я получаю, относится к моей пользовательской привязке, в которой есть как привязывающие элементы reliableSession, так и mixedDuplex:
<customBinding>
<binding name="netTcpCustom"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00">
<reliableSession />
<compositeDuplex />
<oneWay />
<windowsStreamSecurity protectionLevel="None" />
<mtomMessageEncoding />
<tcpTransport maxBufferPoolSize="524288"
maxReceivedMessageSize="2147483647"
connectionBufferSize="8192"
hostNameComparisonMode="StrongWildcard"
channelInitializationTimeout="00:01:00"
maxBufferSize="2147483647"
maxPendingConnections="20"
maxOutputDelay="00:00:00.2000000"
maxPendingAccepts="5"
transferMode="Streamed"
listenBacklog="20"
portSharingEnabled="false"
teredoEnabled="false">
<connectionPoolSettings groupName="default" leaseTimeout="00:05:00"
idleTimeout="00:02:00" maxOutboundConnectionsPerEndpoint="20" />
</tcpTransport>
</binding>
</customBinding>
После некоторых поисков я обнаружил, что нельзя использовать потоковую передачу при использовании надежного обмена сообщениями (WS-RM). Это связано с тем, что WS-RM необходимо применять подпись / контрольные суммы ко всему сообщению как единое целое и т. Д .; и это невозможно при потоковой передаче TransferMode, только с буферизованным TransferMode.
Поскольку я проектирую дуплексный канал привязки и использую этот сервис для загрузки больших файлов, мне нужен TransferMode = streamed И надежный элемент привязки сеанса.
Кто-нибудь знает, как на это напасть? Можете ли вы показать мне, как это делается?
Заранее спасибо.