में बड़ी संख्या में रिकॉर्ड्स के साथ डाउनलोड के लिए एक्सएमएल फ़ाइल प्रदान करें, मुझे 6,00,000 रिकॉर्ड (डेटा बढ़ सकता है) के साथ डाउनलोड करने के लिए एक्सएमएल फ़ाइल प्रदान करने की आवश्यकता है, लेकिन डिस्क पर फ़ाइल को सहेजने की अनुमति नहीं है। मैं सीधे एक्सएमएल लिखित रूप में इस मुद्दे का सामना करना पड़ रहा था तो & स्ट्रीम करने के लिए डाउनलोड के लिए उपलब्ध कराने के, तो मैं पहले इसे करने के लिए डिस्क & लेखन डेटा पर xml फ़ाइल बनाया है और बाई & डाउनलोड के लिए उपलब्ध कराने में इसे पढ़ने के लिए कोशिश कर रहा है और उसके बाद डिस्क से फ़ाइल को नष्ट । लेकिन में "system.outofmemoryexception" प्राप्त करना "बाइट [] b = File.ReadAllBytes (filepath);"।एएसपीनेट सी #
string name = string.Format("{0:yyyyMMddHHmmss}", DateTime.Now);
string filename = "TestFile.xml";
string filepath = ConfigurationManager.AppSettings["XmlFiles"] + "\\" + filename;
DataTable dataTable = dsData.Tables[0];
FileStream fs =new FileStream(filepath, FileMode.Create);
XmlWriterSettings xws = new XmlWriterSettings { OmitXmlDeclaration = true };
using (XmlWriter xmlWriter = XmlWriter.Create(fs,xws))
{
xmlWriter.WriteStartElement("root");
foreach (DataRow dataRow in dataTable.Rows)
{
xmlWriter.WriteStartElement("datanode");
foreach (DataColumn dataColumn in dataTable.Columns)
{
xmlWriter.WriteElementString(dataColumn.ColumnName.Replace("\n\r", " ")
.Replace("\n", " ").Replace("\r", " "), Convert.ToString(dataRow[dataColumn]).Replace("\n\r", " ").Replace("\n", " ").Replace("\r", " "));
}
xmlWriter.WriteEndElement();
}
xmlWriter.WriteEndElement();
xmlWriter.Flush();
xmlWriter.Close();
}
fs.Close();
Byte[] b = File.ReadAllBytes(filepath);
if (File.Exists(filepath))
File.Delete(filepath);
string s = string.Format("{0:yyyyMMddHHmmss}", DateTime.Now);
HttpContext.Current.Response.ContentType = "application/xml";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + s + ".xml" + "");
HttpContext.Current.Response.BinaryWrite(b);
HttpContext.Current.Response.End();
वहाँ किसी अन्य तरीके से रिकॉर्ड की बड़ी संख्या को संभालने के लिए है:
नीचे मेरी कोड है?
शायद [इस] (http://stackoverflow.com/questions/2809514/outofmemoryexception-when-i-read-filestream-500-mb) धागा तुम्हारी मदद करेगा। –
धन्यवाद @ टोबियास जोहानसन, मैं यह जांचूंगा। – GMD