我们需要构建一个包含 Google 提要的大型XML文件。如果我们在控制台应用程序中执行代码,或者在本地机器上运行在 IIS Express 下的 ASP.NET 站点中,它会运行得非常快。
如果我们在 IIS 7.5 下的 ASP.net 环境中执行它(作为 webforms 或 MVC 站点),它的执行速度会大大降低。
我们使用一个xmltextwriter
对象并通过 读取数据SqlDataReader
,每次读取一行时,我们创建不同的节点并将它们写入磁盘。
xmlFeedWriterToFile = new XmlTextWriter(tempXmlfileName, Encoding.UTF8);
while (feedReader.Read())
{
xmlFeedWriterToFile.WriteStartElement("item");
// ID
xmlFeedWriterToFile.WriteStartElement("id", "http://base.google.com/ns/1.0");
if (this.ReturnSKULevelResults)
// SKU-specific ID
xmlFeedWriterToFile.WriteString(string.Format("{0}", feedReader.GetString(4)));
else
{
xmlFeedWriterToFile.WriteString(string.Format("{0}_{1}", feedReader.GetString(1), feedReader.GetString(2)));
xmlFeedWriterToFile.WriteEndElement();
}
// other code that writes XML nodes in the XmlTextWriter object
似乎 ASP.Net 应用程序池会减慢速度,因为在控制台应用程序中执行相同的例程非常快。
我们还尝试将 Web 应用程序部署在不同的 WebServer 上,但结果是相同的:
任何解决该问题的想法将不胜感激。问候