22. June 2009 16:39
I have been running into some situations WCF barfs on calls where the message body is very large:
"The maximum string content length quota (8192) has been
exceeded while reading XML data. This quota may be increased by
changing the MaxStringContentLength property on the
XmlDictionaryReaderQuotas object used when creating the XML reader.
Line 3, position 9381."
Took a little poking around to see what exactly was going wrong here, but a couple of posts got me going in the right direction. In fact, this is a real excellent exception message in that it tells me exactly what I need to do to resolve the issue: increase the MaxStringContentLength property on the XmlDictionaryReadersQuotas object that the BasicHttpBinding class is using.
According to MSDN the MaxStringContentLength property:
"Gets or sets the maximum size for a message that can be received on a channel configured with this binding."
The purpose of this restriction being the possiblity of DoS attacks on a publicaly exposed service caused by arbitrarily large messages. Since I am using TransferMode.Buffered, the message size is bound by the size of the MaxReceivedMessageSize by default.
This is the end result: