我要问并回答我自己的问题,我希望没有人介意,但我认为这可能对其他人有用。
如果设置的ASP.NET Web服务返回包含对XML无效的字符的对象,则在将对象序列化为SOAP xml并且客户端尝试反序列化该xml后,将抛出异常。
你如何解决这个问题?
答案 0 :(得分:8)
为了解决这个问题,我使用作为.NET一部分的wsdl.exe应用程序为我的webservice生成了类文件。这很简单,只需在命令提示符下键入wsdl.exe <path to webservice>
生成之后我重载了方法
protected XmlReader GetReaderForMessage(SoapClientMessage message, int bufferSize)
像这样
protected override XmlReader GetReaderForMessage(SoapClientMessage message, int bufferSize)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.CheckCharacters = false;
return XmlTextReader.Create(message.Stream, settings);
}
这告诉XmlTextReader忽略它正在读取的XML文件的有效性。当我要立即反序列化它时,没有理由关心xml是否有效。
希望这可以帮助那些遇到同样问题的人!