如何在XDocument.Load(字符串uri)上设置超时?

有没有办法在System.Linq.Xml.XDocument.Load(string uri)上设置超时? 或者我应该使用实现C#通用超时中描述的技术?

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

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

我之所以说它更“健壮”的原因是,如果XML文件引用了Web服务器上的其他实体(例如DTD),那么您可能希望超时也适用于此而不仅仅是初始请求。