Transfer mode Streamed is not supported by ReliableSessionBindingElement.


P

pbd22

Hi.

I am designing a duplex channel wcf service using netTcpBinding.
Currently, when I compile my class library, I am getting the following
error:

**

Transfer mode Streamed is not supported by
ReliableSessionBindingElement.

**

Below is my 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>
</baseAddresses>
</host>
</service>

Since I am designing a duplex channel service, I have SessionMode =
SessionMode.Required:

[ServiceContract(Namespace = "API.FileTransfer",
CallbackContract = typeof(ISOAPFileTransferCallback),
SessionMode = SessionMode.Required)]
public interface ISOAPFileTransferService
{

The error I am getting is referring to my custom binding which has
both reliableSession and compositeDuplex binding elements:

<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>

After some searching, I found out that you cannot use streaming when
using reliable messaging (WS-RM). This is because WS-RM needs to apply
signing/checksums to the whole message as a unity, etc; and this is
not possible when streamed transferMode, only with buffered
transferMode.

Since I am designing a duplex binding channel and I am using this
service for the upload of large files, i need transferMode = streamed
AND the reliable session binding element.

Does anybody know how to attack this? Can you show me how it is done?

Thanks in advance.
 
Ad

Advertisements

P

pbd22

I believe the answer to this is "can't be done" unless anybody out
there has knowledge to the contrary.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top