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

Boo*_*oog 5 xml asp.net serialization web-services

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

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

你是如何解决这个问题的?

Boo*_*oog 8

为了解决这个问题,我使用作为.NET一部分的wsdl.exe应用程序为我的webservice生成了类文件.这很简单,在命令提示符下输入wsdl.exe <path to webservice>

生成之后,我重载了该方法

protected XmlReader GetReaderForMessage(SoapClientMessage message, int bufferSize)
Run Code Online (Sandbox Code Playgroud)

像这样

protected override XmlReader GetReaderForMessage(SoapClientMessage message, int bufferSize)
{
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.CheckCharacters = false;
    return XmlTextReader.Create(message.Stream, settings);
}
Run Code Online (Sandbox Code Playgroud)

这告诉XmlTextReader忽略它正在读取的XML文件的有效性.当我要立即反序列化它时,没有理由关心xml是否有效.

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