C# 多个XDocument.Load(uri)请求的限制?
我正在通过Internet将不到400个XDocument.Load()请求线程化到类似但唯一的URI。每次我这样做时,32个请求都会导致“根元素丢失”。异常。每次都有不同的请求导致异常,但总是有32个,这有点可疑。XML的长度总是不同的,但没有一个是小于16kb的 XDocument.Load()中是否存在导致此错误的某种限制?或者可能是底层WebRequest(如果正在使用的话)或内部XmlReader?或者是穿线?我正在添加QueueUserWorkItem以将请求添加到线程池 有什么想法吗C# 多个XDocument.Load(uri)请求的限制?,c#,.net,multithreading,linq-to-xml,C#,.net,Multithreading,Linq To Xml,我正在通过Internet将不到400个XDocument.Load()请求线程化到类似但唯一的URI。每次我这样做时,32个请求都会导致“根元素丢失”。异常。每次都有不同的请求导致异常,但总是有32个,这有点可疑。XML的长度总是不同的,但没有一个是小于16kb的 XDocument.Load()中是否存在导致此错误的某种限制?或者可能是底层WebRequest(如果正在使用的话)或内部XmlReader?或者是穿线?我正在添加QueueUserWorkItem以将请求添加到线程池 有什么想法
非常感谢。就我个人而言,我怀疑这是XDocument。我要做的第一件事是连接一个网络工具,比如Fiddler,看看是什么通过电线传来的。特别是我想知道你是否被NLB或类似的限制 如果里面没有什么明显的东西,我会把它分成几步;下载为XML(可能是WebClient DownloadString),然后在本地解析XML。这里的优点是,您可以添加一些try/catch,以便在失败时记录得到的响应字符串,以便进行分析 如果您这样做,并且它开始运行,那么这可能表明XDocument.Load中存在错误;同样地,如果这样做失败了,但所有的响应都是格式良好的XML,那么类似的情况就是解析中的错误。但它也应该排除(或确定)与网络相关的原因。
- 将每个Load()包装在一个重试循环中,例如3次
- 将线程池中的最大线程数减少到16李>
- 使用ab确定远程服务器是否不可靠李>