The release notes document for Beta 2 lists the following known issue with
WCF Stream types and operations:
4.1 When Using WCF Steam Types and Operations, May Get
QuotaExceededException When Using Binary Encoding
When using types that derive from System.IO.Stream as input or output
parameters in service operations, QuotaExceededException may be thrown if the
binary encoding is being used, even though no quotas have actually been
exceeded. This encoding is the default for several standard bindings, such as
To work around this problem, set the MaxBytesPerRead quota to the value 4200
(or some other number that is divisible by 8 but not by 16) instead of the
default value of 4096. You can do this by changing the setting in your
applicationâ€™s configuration file. MaxBytesPerRead is contained in the
ReaderQuotas subsection of the binding configuration section.
The problem I see with the stated work-around is that it cannot be applied
to a streamed TCP binding. To set the transfer mode for a TCP binding to
Streamed in a config file, we must use the CustomBinding/Binding elements.
But, the readerQuotas element is not a valid child element of
CustomBinding/Binding (or their tcpTransport child element). So, in
practice, there is no way to implement this work-around and therefore Beta 2
has broken TCP streamed services!
(I really hope I'm wrong about this!)
BTW, whatever happened to the TransferMode attribute for the netTcpBinding
element? In the earlier pre-releases, the NetProfileTcp binding had a
TransferMode attribute. Why are we forced to use CustomBinding to switch to