Salve a tutti.
Da tempo ho una funzione sul sito che utilizza office.interop.Excel per prendere un file excel (template) buttarci dentro i dati da un DataRow, e salvarlo.
Da pochi giorni abbiamo spostato da un Windows Server 2002 SBS con IIS6 ad un Windows Server 2008 standard con IIS7
Per il resto mi pare tutto uguale (versione office, versione PIAs)
In particolare il codice che uso:
Microsoft.Office.Interop.Excel.Application xl = null;
Workbooks xlBooks = null;
Workbook xlBook = null;
//Worksheets xlSheets = null;
Sheets xlSheets = null;
Worksheet xlSheet = null;
object oMissing = System.Reflection.Missing.Value;
SetCurrentCulture();
try
{
xl = new Application();
xl.Interactive = false;
xl.Visible = false;
xlBooks = xl.Workbooks;
/*************************** RIGA INCRIMINATA **********************************/
xlBook = xlBooks.Open(path, oMissing, false, oMissing, ... ... , oMissing);
/*************************************************************************************/
xlSheets = xlBook.Worksheets;
[... ]
xlBook.Save();
}
catch
{
if (File.Exists(path))
File.Delete(path);
throw;
}
finally
{
//parte di rilascio degli oggetti
//Marshal.ReleaseComObject(oggettiExcel)
GC.Collect();
GC.WaitForPendingFinalizers();
}
ResetCurrentCulture();
}
Sul server nuovo ricevo questo errore:
Qualcuno ha qualche idea??? a livello di permessi (che ora sono quelli standard), devo modificare qualcosa??
Inoltre, pur utilizzando le istruzioni consigliate da molti programmatori (Marshal.ReleaseComObject), una o più istanze di EXCEL rimangono presenti nei processi. Come mai? (mortacci sua?)