ASP.NET Web Service中XML文档中的非法字符

时间:2009-02-14 22:31:39

标签: asp.net xml web-services serialization

我要问并回答我自己的问题,我希望没有人介意,但我认为这可能对其他人有用。

如果设置的ASP.NET Web服务返回包含对XML无效的字符的对象,则在将对象序列化为SOAP xml并且客户端尝试反序列化该xml后,将抛出异常。

你如何解决这个问题?

1 个答案:

答案 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是否有效。

希望这可以帮助那些遇到同样问题的人!