Недопустимые символы в документе XML в веб-службе ASP.NET - PullRequest
5 голосов
/ 15 февраля 2009

Я собираюсь задать свой собственный вопрос и ответить на него, надеюсь, никто не возражает, но я подумал, что это может быть полезно для других людей.

Если вы настроите веб-службу ASP.NET, которая возвращает объекты, содержащие символы, недопустимые для XML, то исключение будет выдано после сериализации объекта в SOAP xml, и клиент попытается десериализовать этот xml.

Как это исправить?

1 Ответ

8 голосов
/ 15 февраля 2009

Чтобы исправить это, я сгенерировал файл класса для своего веб-сервиса с помощью приложения wsdl.exe, которое является частью .NET. Это просто сделать, в командной строке просто наберите 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 или нет, когда я просто собираюсь немедленно десериализовать его.

Надеюсь, это поможет кому-то с такой же проблемой!

...