У нас есть приложение, которое использует StreamingSubscriptionConnection
для чтения каждого сообщения электронной почты, отправляемого на конкретный почтовый ящик. Проблема, с которой я сталкиваюсь несколько раз в день во время разработки. Я получаю исключение {"'{квадратный символ}', шестнадцатеричное значение 0x1F, является недопустимым символом. Строка 1, позиция 1."}
.
Вот трассировка стека:
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
at System.Xml.XmlTextReaderImpl.Throw(Int32 pos, String res, String[] args)
at System.Xml.XmlTextReaderImpl.ThrowInvalidChar(Int32 pos, Char invChar)
at System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars)
at System.Xml.XmlTextReaderImpl.ParseText()
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Xml.XmlTextReaderImpl.Read()
at Microsoft.Exchange.WebServices.Data.EwsXmlReader.Read()
at Microsoft.Exchange.WebServices.Data.EwsXmlReader.Read(XmlNodeType nodeType)
at Microsoft.Exchange.WebServices.Data.EwsXmlReader.InternalReadElement(XmlNamespace xmlNamespace, String localName, XmlNodeType nodeType)
at Microsoft.Exchange.WebServices.Data.EwsXmlReader.ReadStartElement(XmlNamespace xmlNamespace, String localName)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ReadResponse(EwsServiceXmlReader ewsXmlReader)
Как безопасно читать электронные письма с EWS, содержащие недопустимые символы?
После долгих поисков выяснилось, что можно было исправить эту проблему с помощью более старых версий API EWS. Однако в новейшей версии управляемого API, похоже, ни у кого нет исправления.
Это перекрестный пост из http://social.technet.microsoft.com/Forums/en-US/exchangesvrdevelopment/ thread / 22863099-1d93-47ac-a11b-08c6bf7facea .
Мне снова удалось получить исключение, а вот полная трассировка стека и то, что Exchange превращает в уведомление.
Я использую Exchange 2010 SP1.
Правка: я возвращаюсь к этому вопросу, так как он вызывает у меня серьезные проблемы, и исходный вопрос ясно указывает на проблему. Я ищу клиентские решения, которые изменяют поведение API управляемого веб-служб Exchange, чтобы фильтровать недопустимые символы из XML и избегать исключений. Исправления сервера Exchange вряд ли могут быть вариантом, если они не являются простыми изменениями конфигурации. Мое программное обеспечение будет запускаться на клиентских серверах Exchange, которые я не контролирую.