У нас есть приложение, которое использует StreamingSubscriptionConnection
для чтения каждого письма, которое отправляется на конкретный почтовый ящик. Проблема, с которой я сталкиваюсь несколько раз в день во время разработки, получает исключение {"'{square character}', hexadecimal value 0x1F, is an invalid character. Line 1, position 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, содержащие недопустимые символы?
После долгих поисков появилась возможность исправить эту проблему со старыми версиями EWS API. Однако с новейшей версией управляемого API никто, похоже, не имеет исправления.
Это перекрестный столбец http://social.technet.microsoft.com/Forums/en-US/exchangesvrdevelopment/thread/22863099-1d93-47ac-a11b-08c6bf7facea.
Мне снова удалось получить исключение, и вот полный стек и что Exchange превращается в уведомление.
Я использую Exchange 2010 SP1.
Изменить: я возрождаю этот вопрос, так как это вызывает у меня серьезные проблемы, и в исходном вопросе четко указывается проблема. Я ищу клиентские решения, которые изменяют поведение управляемого EWS API для фильтрации недопустимых символов из XML и исключения исключений. Исправления сервера Exchange вряд ли будут вариантом, если только они не являются простыми изменениями конфигурации. Мое программное обеспечение будет работать с клиентскими серверами Exchange, которые я не контролирую.