Указанное исключение выдается, когда:
- Приложение, в котором размещен веб-сервис, не указало
maxStringContentLength
квоту считывателя (поэтому используется по умолчанию) или слишком мала;
- Длина хотя бы одного из строковых аргументов вызванного веб-метода нарушила
maxStringContentLength
квоту чтения.
Как говорится в исключительной ситуации, ошибка произошла, когда десериализовано тело сообщения запроса для операции ' SubmitMobileData '.
Обычно сериализация происходит на стороне клиента, а десериализация - на стороне обслуживания. Поэтому квоты чтения для привязки, используемой веб-службой, должны быть добавлены (или обновлены), чтобы в них содержался атрибут maxStringContentLength
, имеющий значение, достаточно большое для каждого вызова SubmitMobileData
для успешного выполнения.
EDIT
Измените конфигурацию конфигурации вашей службы, чтобы увеличить ограничение длины содержимого элемента XML. Не копируйте это в вашу конфигурацию, просто объедините это в:
<system.serviceModel>
<services>
<service name="Server.MobileUtilities">
<endpoint address="http://utopiapimp.com/services/MobileUtilities.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMobileUtilities"
contract="ServiceReferences.IMobileUtilities" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IMobileUtilities">
<!-- Content of each XML element can be up to 10 million characters. -->
<readerQuotas maxStringContentLength="10000000" />
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
EDIT :
Мне кажется, что проблема со службой в конце концов.
Если бы проблема была на стороне клиента, вместо полученного вами исключения возникнет следующее исключение:
Превышена максимальная квота на длину содержимого строки (8192) при чтении данных XML. Эту квоту можно увеличить, изменив свойство MaxStringContentLength в объекте XmlDictionaryReaderQuotas, используемом при создании средства чтения XML.
Поскольку сборки Silverlight являются подмножеством сборок WP7, квоты считывателей на стороне клиента всегда устанавливаются на максимальные значения.
Это часть определения класса XmlDictionaryReaderQuotas:
static XmlDictionaryReaderQuotas()
{
maxQuota = new XmlDictionaryReaderQuotas(0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff);
}
public static XmlDictionaryReaderQuotas Max
{
get
{
return maxQuota;
}
}