gpt4 book ai didi

c# - 使用 EWS 阅读电子邮件时处理非法 XML 值

转载 作者:可可西里 更新时间:2023-11-01 09:15:53 25 4
gpt4 key购买 nike

我们有一个应用程序,它使用 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 Notification Exception

编辑:我正在恢复这个问题,因为它给我带来了严重的问题,而原始问题清楚地说明了问题。我正在寻找修改托管 EWS API 行为的客户端解决方案,以从 XML 中过滤无效字符并避免异常。 Exchange 服务器修复不太可能成为一种选择,除非它们是简单的配置更改。我的软件将针对不受我控制的客户 Exchange 服务器运行。

最佳答案

一般的解决方法是,编写一个实用程序来监视收件箱文件夹作为后台进程,如果您无法解决接收无效 XML 文件的问题:

该程序将执行以下操作:

您应该能够安全地替换所有 non-printable以下字符 US-ASCII 32 具有这样的转义序列,但 '\r'、'\n' 和 '\t' 除外。但是,您还必须确保永远不会损坏 XML 文件,并且更改后的 XML 文件仍然可以被使用它们的任何系统使用。

或者寻找一种更常见的 XML 清理程序库。

关于c# - 使用 EWS 阅读电子邮件时处理非法 XML 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6844070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com