Ошибка NetDispatcherFaultException при возврате экранированного XML - PullRequest
1 голос
/ 29 июня 2011

У меня есть мыльный веб-сервис, в котором тело ответа содержит некоторые экранированные xml.Таким образом, в теле ответа у меня есть:

 <soap:Body>
   <GetServiceResponse xmlns="http://www.abc.com/x/">
        <GetServiceResult>
           <Result>
              <Value>&amp;lt;/param&amp;gt; etc....</Value>
           </Result>
        </GetServiceResult>
     </GetServiceResponse>
 </soap:Body>

На моем клиенте я получаю исключение NetDispatcherFaultException "форматер выдал исключение при попытке десериализации".Я использую на клиенте следующий код:

 var binding = new BasicHttpBinding();
 var address = new EndpointAddress("http://localhost:2948/ReportingService.asmx");
 ReportingServiceSoap service = new ReportingServiceSoapClient(binding, address);
 var response = service.GetConfig(request); <-- Exception raised on call

Если я заменю экранированный текст некоторым строковым значением (без экранированного xml), то клиент не вызовет исключение.

Любойидеи где искать?

JD

1 Ответ

3 голосов
/ 30 июня 2011

С включенными исключениями я обнаружил, что это проблема с ReadQuotas. Кроме того, я тестировал интерфейс клиента из mSpec, что означало, что app.config не читался с исправленными значениями ReadQuotas. Итак, в коде у меня есть:

var binding = new BasicHttpBinding();
binding.ReaderQuotas.MaxStringContentLength = 2147483647;
binding.ReaderQuotas.MaxArrayLength = 2147483647;
binding.ReaderQuotas.MaxDepth = 2147483647;
binding.ReaderQuotas.MaxNameTableCharCount = 2147483647;
binding.ReaderQuotas.MaxBytesPerRead = 2147483647;

Это решило проблему.

...