如何在 XDocument.Load(string uri) 上设置超时?

Posted

技术标签:

【中文标题】如何在 XDocument.Load(string uri) 上设置超时?【英文标题】:How set timeout on XDocument.Load(string uri)? 【发布时间】:2011-02-27 14:00:12 【问题描述】:

有没有办法在 System.Linq.Xml.XDocument.Load(string uri) 上设置超时?还是应该使用Implement C# Generic Timeout 中描述的技术?

【问题讨论】:

【参考方案1】:

据我所知,没有任何内置功能。您可以使用 WebRequest 的实例自己获取 XML 内容(您可以设置超时),然后将 XML 数据直接传递给 XDocument.Load 方法。

从技术上讲,最“稳健”的解决方案是自己实现XmlResolver,它在GetEntity() 实现中使用WebRequest 来进行超时。然后根据您的XmlResolver 创建一个XmlReader 并将XmlReader 传递给XDocument.Open

我说这会更“健壮”的原因是,如果 XML 文件引用 Web 服务器上的 other 实体(例如 DTD),那么您可能希望超时申请也不仅仅是最初的请求。

【讨论】:

以上是关于如何在 XDocument.Load(string uri) 上设置超时?的主要内容,如果未能解决你的问题,请参考以下文章

XElement.Load 和 XDocument.Load 有啥区别?

使用XDocument.Load(xmlreader)方法?

如何防止XDocument添加XML版本和编码信息

C# XDocument 如何使用 linq 过滤元素

如何在线加载需要用户名和密码的Xdocument

使用 Xdocument 进行简单的 Xml 解析