【发布时间】:2011-02-27 14:00:12
【问题描述】:
有没有办法在 System.Linq.Xml.XDocument.Load(string uri) 上设置超时?还是应该使用Implement C# Generic Timeout 中描述的技术?
【问题讨论】:
标签: c# .net timeout linq-to-xml
有没有办法在 System.Linq.Xml.XDocument.Load(string uri) 上设置超时?还是应该使用Implement C# Generic Timeout 中描述的技术?
【问题讨论】:
标签: c# .net timeout linq-to-xml
据我所知,没有任何内置功能。您可以使用 WebRequest 的实例自己获取 XML 内容(您可以设置超时),然后将 XML 数据直接传递给 XDocument.Load 方法。
从技术上讲,最“稳健”的解决方案是自己实现XmlResolver,它在GetEntity() 实现中使用WebRequest 来进行超时。然后根据您的XmlResolver 创建一个XmlReader 并将XmlReader 传递给XDocument.Open。
我说这会更“健壮”的原因是,如果 XML 文件引用 Web 服务器上的 other 实体(例如 DTD),那么您可能希望超时申请也不仅仅是最初的请求。
【讨论】: