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

Lar*_*ien 6 .net c# timeout linq-to-xml

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

Dea*_*ing 7

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

从技术上讲,最"稳健"的解决办法是实行的XmlResolver自己它采用了WebRequestGetEntity()的实现做了超时.然后创建一个XmlReader基于你的XmlResolver并传递XmlReaderXDocument.Open.

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