【发布时间】:2011-06-16 02:03:54
【问题描述】:
我正在用 xml 阅读器阅读 rss。
当 url 错误时,它需要 60 秒才能失败。如何指定超时?
using (XmlReader reader = XmlReader.Create(url, settings))
【问题讨论】:
我正在用 xml 阅读器阅读 rss。
当 url 错误时,它需要 60 秒才能失败。如何指定超时?
using (XmlReader reader = XmlReader.Create(url, settings))
【问题讨论】:
我不知道是否可以更改 XmlReader 超时,但也许您可以做一些不同的事情:
使用 WebRequest 获取 xml(这确实有一个 Timeout 属性)并在您收到该 xml 后将其提供给 XmlReader:
WebRequest request = WebRequest.Create(url);
request.Timeout = 5000;
using (WebResponse response = request.GetResponse())
using (XmlReader reader = XmlReader.Create(response.GetResponseStream()))
{
// Blah blah...
}
【讨论】:
将您自己的流传递给 XmlReader.Create 调用。设置任何你喜欢的超时时间。
【讨论】:
您可以创建自己的 WebRequest 并从响应流创建 XmlReader。有关详细信息,请参阅对此问题的回复:
【讨论】:
另一种选择是这样做
var settings = new XmlReaderSettings();
settings.XmlResolver = resolver;
// Create the reader.
XmlReader reader = XmlReader.Create("http://serverName/data/books.xml", settings);
resolver 实例是一个自定义类,可更改以下链接中的文档中所述的 url 获取行为。
【讨论】: