#.net #wcf
#.net #wcf
Вопрос:
У меня есть веб-служба WCF, которая в настоящее время принимает объект JSON из строк, где одна из пар ключ / значение содержит строку в кодировке Base 64 двоичных данных изображения.
Когда веб-служба получает запрос, она выдает следующую ошибку:
Сообщение об исключении: «Произошла ошибка десериализации объекта типа. При чтении XML-данных превышена максимальная квота длины содержимого строки (8192).
Я следовал некоторым решениям, предложенным другими людьми, и мой Web.Config теперь имеет пользовательскую привязку:
<bindings>
<webHttpBinding>
<binding name="LongWebHttpBinding"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="32"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</webHttpBinding>
</bindings>
С конечной точкой, настроенной следующим образом:
<services>
<service name="GenericService">
<endpoint address=""
behaviorConfiguration="jsonBehavior"
binding="webHttpBinding" bindingConfiguration="LongWebHttpBinding"
contract="IGenericService" />
</service>
</services>
Согласно всем другим предложениям, настройка bindingConfiguration
должна разрешить сообщение об ошибке, которое я получаю.
Есть ли какие-либо дальнейшие шаги, которые я могу предпринять, чтобы попытаться разобраться в этом?
Комментарии:
1. Он все еще не работает после внесения вышеуказанных изменений?
2. Убедитесь, что
name
атрибут в вашемservice
элементе содержит имя типа с пространствами имен (или полное имя типа, если на него ссылаются из нелокальной сборки). В противном случае ваша конфигурация не используется.3. @LadislavMrnka — Я никогда этого не знал (хотя я всегда использую полное пространство имен).
4. @LadislavMrnka Похоже, проблема заключалась в том, что я не использовал полное пространство имен, поэтому, как вы сказали, конфигурация не использовалась.
Ответ №1:
Если у вас все еще возникают проблемы после новых настроек, вы можете настроить maxItemsInObjectGraph
атрибут в <dataContractSerializer>
разделе определенного вами jsonBehavior.
Однако я полагаю, что если это проблема, исключение сообщит вам об этом — не уверен, поскольку мне никогда не приходилось настраивать что-либо, кроме maxReceivedMessageSize или MaxStringContentLength .
Ответ №2:
Как Ладислав Мрнка, проблема заключалась в том, что я не использовал полное пространство имен службы при вводе его в Web.Config.
Как только я добавил полное пространство имен, оно, похоже, работает правильно.
Спасибо за вашу помощь