我有一个soap web服务,其中响应主体包含一些转义的xml。 所以在我的回应中:
<soap:Body>
<GetServiceResponse xmlns="http://www.abc.com/x/">
<GetServiceResult>
<Result>
<Value>&lt;/param&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
答案 0 :(得分:3)
启用“例外”后,我发现这是一个ReadQuotas问题。另外,我正在测试mSpec的客户端界面,这意味着没有使用更正的ReadQuotas值读取app.config。所以在代码中我有:
var binding = new BasicHttpBinding();
binding.ReaderQuotas.MaxStringContentLength = 2147483647;
binding.ReaderQuotas.MaxArrayLength = 2147483647;
binding.ReaderQuotas.MaxDepth = 2147483647;
binding.ReaderQuotas.MaxNameTableCharCount = 2147483647;
binding.ReaderQuotas.MaxBytesPerRead = 2147483647;
这解决了这个问题。