Merhaba arkadaşlar. XML dökümanı oluşturan bi metot yazdım ancak metot çalıştıktan sonra catch e düşüyo ve
Exception of type 'System.OutOfMemoryException' was thrown. hatası döndürüyor . Yardımcı olursanız sevinirim
Metot bu:
var sb = new StringBuilder();
var stringWriter = new StringWriter(sb);
var xmlWriter = new XmlTextWriter(stringWriter);
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("Urunler");
ISettingService settingService = EngineContext.Current.Resolve<ISettingService>();
foreach (var product in products)
{
var productCategories = _categoryService.GetProductCategoriesByProductId(product.Id).FirstOrDefault();
var productManufacturers = _manufacturerService.GetProductManufacturersByProductId(product.Id).FirstOrDefault();
var productVariant = _productService.GetProductVariantsByProductId(product.Id);
IList<Core.Domain.Media.Picture> pictures = new List<Core.Domain.Media.Picture>();
foreach (var variant in productVariant)
{
pictures = variant.GetProductVariantPictures(_pictureService);
xmlWriter.WriteStartElement("Urun");
if (product.Id.ToString() != null)
{
xmlWriter.WriteElementString("urun_id", product.Id.ToString());
}
else
{
xmlWriter.WriteElementString("urun_id","");
}
if(variant.Name != null )
{
xmlWriter.WriteElementString("baslik",variant.Name);
}
else
{
xmlWriter.WriteElementString("baslik", product.Name);
}
if (productCategories != null)
{
xmlWriter.WriteElementString("kategori", productCategories.Category.Name);
}
if (productManufacturers != null)
{
xmlWriter.WriteElementString("marka", productManufacturers.Manufacturer.Name);
}
else
{
xmlWriter.WriteElementString("marka", "");
}
if (variant.Currency == null)
{
xmlWriter.WriteElementString("birim", "TRY");
}
else
{
xmlWriter.WriteElementString("birim", variant.Currency.CurrencyCode);
}
if (pictures != null)
{
xmlWriter.WriteElementString("urun_url", null, _pictureService.GetPictureUrl(pictures.FirstOrDefault()));
}
else
{
xmlWriter.WriteElementString("urun_url","");
}
var url = string.Format("{0}p/{1}/{2}", _webHelper.GetStoreLocation(false), product.Id, product.GetSeName());
xmlWriter.WriteStartElement("linkhref");
xmlWriter.WriteCData(url.ToString());
xmlWriter.WriteEndElement();
if(variant.CurrencyId == null )
{
xmlWriter.WriteElementString("fiyat", variant.Price.ToString());
}
else if (variant.CurrencyId != null && variant.CurrencyId.ToString() == settingService.GetSettingByKey<string>("currencysettings.primarystorecurrencyid"))
{
xmlWriter.WriteElementString("fiyat", variant.Price.ToString());
}
else
{
xmlWriter.WriteElementString("fiyat", variant.CurrencyPrice.ToString());
}
xmlWriter.WriteEndElement();
}
}
xmlWriter.WriteEndElement();
xmlWriter.WriteEndDocument();
xmlWriter.Close();
return stringWriter.ToString();