代码之家  ›  专栏  ›  技术社区  ›  TruMan1

防止或处理超时XmlReader.创建(uri)

  •  4
  • TruMan1  · 技术社区  · 14 年前

    有时,通过URL读取XML时会出现超时异常。我能做些什么来防止这种情况,或者这是远程服务器的问题吗?下面是我的简单代码:

    XmlDocument doc = new XmlDocument();
    doc.Load(XmlReader.Create(this.RssUrl));
    

    我看到一篇文章说KeepAlive可能会有所帮助,但我不知道如何将该设置传递到上面的代码中(或者这是否是正确的解决方案): http://www.velocityreviews.com/forums/t95843-system-webexception-the-operation-has-timed-out.html

    这是例外,请帮忙!

    Exception Details: System.Net.WebException: The operation has timed out
    Stack Trace: 
    
    [WebException: The operation has timed out]
       System.Net.HttpWebRequest.GetResponse() +5375213
       System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri, ICredentials credentials) +69
       System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials) +3929371
       System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn) +54
       System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings, XmlParserContext inputContext) +144
       System.Xml.XmlReader.Create(String inputUri) +8
    
    1 回复  |  直到 14 年前
        1
  •  7
  •   Alex McBride    14 年前

    WebRequest Timeout.Infinite 并将其传递给XmlReader。

    WebRequest request = WebRequest.Create(this.RssUrl);
    request.Timeout = Timeout.Infinite;
    
    using (WebResponse response = request.GetResponse())
    using (XmlReader reader = XmlReader.Create(response.GetResponseStream()))
    {
        // Blah blah...
    }
    

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(this.RssUrl);
    request.KeepAlive = true;