«Максимальная квота длины строки (8192) была превышена при чтении данных XML», вызывая WCF через mexAddress moniker - PullRequest
6 голосов
/ 17 июня 2009

Я пытаюсь вызвать службу WCF через mex с классической страницы ASP. Я получил вызов, используя данные о MSDN , но если я возвращаю количество данных, превышающее 8 КБ, я получаю исключение, заявляющее:

Максимальная длина содержимого строки квота (8192) была превышена чтение данных XML. Эта квота может быть увеличилась за счет изменения Свойство MaxStringContentLength на Используемый объект XmlDictionaryReaderQuotas при создании читателя XML ...

Исправить это достаточно просто в клиенте .NET: вы можете настроить конфигурацию клиента так, чтобы он связывался с разделом readerQuotas, включая увеличение квоты. Однако, так как я создаю сервис-прозвище для передачи вызова GetObject в ASP, у меня нет доступа к конфигурации для редактирования. Если бы это было приложение VB6, я мог бы использовать dllhost.exe.config, но это не так. Узел bindingConfiguration (и подузлы) не являются параметрами, которые я могу установить в строке моникера.

Любые идеи о том, как я мог повлиять на этот параметр в контексте ASP? Фрагмент ASP со строкой прозвища, указанной ниже:

   Dim strXml, moniker, objProxy

   moniker="service:mexAddress='http://localhost/SomeApp/SomeServices/SomeService.svc/mex', "
   moniker=moniker + "address='http://localhost/SomeApp/SomeServices/SomeService.svc',"
   moniker=moniker + "contract=ISomeService, contractNamespace=http://foo.com, "
   moniker=moniker + "binding=WSHttpBinding_ISomeService, bindingNamespace=http://foo.com"

   Set objProxy = GetObject(moniker)

   strXml = objProxy.DoWork("foo", "bar")

Спасибо!

Ответы [ 2 ]

2 голосов
/ 23 июня 2009

Попробуйте установить maxStringContentLength в конфигурации привязки wcf на стороне сервера.

0 голосов
/ 23 июня 2009

Насколько я понимаю, сервис: mexAddress moniker на самом деле использует клиент WCF за интерфейсом COM. В этом случае вы можете сохранить конфигурацию WCF в файле с именем «foo» .exe.config, где «foo» заменяется именем исполняемого файла.

Если вы работаете с ASP в IIS6 или IIS7, то EXE, который запускает ASP, вероятно, w3wp.exe, что означает, что вам нужно перенести конфигурацию в файл с именем w3wp.exe.config, расположенный в каталоге : \ Windows \ system32 \ Inetsrv.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...