有没有办法在System.Linq.Xml.XDocument.Load(string uri)上设置超时?或者我应该使用Implement C# Generic Timeout中描述的技术吗?
答案 0 :(得分:7)
据我所知,没有任何内置功能。您可以使用WebRequest实例(可以设置超时)自行获取XML内容,然后将XML数据直接传递给XDocument.Load
方法。
从技术上讲,最“强大”的解决方案是自己实现XmlResolver,GetEntity()实现中使用WebRequest
来执行超时。然后根据您的XmlReader
创建XmlResolver
,并将XmlReader
传递给XDocument.Open
。
我之所以说“更强大”的原因是,如果XML文件引用了Web服务器上的其他实体(例如DTD),那么您可能希望超时适用于同时也不只是初始请求。