为什么xmlDocument Load抛出超时错误?

时间:2019-05-22 07:16:08

标签: c#

我使用System.Xml.XmlDocument加载文件,然后等待一分钟引发超时错误。奇怪的是,代码可以在另一个项目中工作。

  1. 我尝试使用System.IO.File。打开该文件,没问题。
  2. XmlDocument.LoadXml()也会引发错误。

    System.Xml.XmlDocument doc = new XmlDocument();
    doc.Load(@"D:\work\xxx.svg");
    

添加:

我看到了堆栈跟踪信息,它是WebException,错误代码为System.Net.HttpWebRequest.GetResponse()。

因此XmlDocument.Load()方法将我的文件路径视为url,但是我不明白为什么它可以在另一个项目中工作

1 个答案:

答案 0 :(得分:2)

我遵循了堆栈跟踪,发现了问题:

  

[XmlException:打开外部DTD   “ http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd”:发生错误   而操作超时。 ]

然后我添加XMLreaderSetting:

XmlDocument xmlDoc = new XmlDocument();
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Ignore;
XmlReader reader = XmlReader.Create(@"D:\\111.txt", settings);
xmlDoc.Load(reader);

他们完成工作。

但是我很好奇为什么在另一个项目中没问题。

我希望这个答案可以帮助另一个遇到同样困难的人。