Errore COMException usando office.interop

giovedì 22 aprile 2010 - 15.31

Gluck74 Profilo | Guru

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:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

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?)

alx_81 Profilo | Guru

>Salve a tutti.
Ciao
David provava a dare, tempo fa, questo consiglio.. Non so se sia mai stato provato ma può essere un inizio:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=22892

poi ho trovato questo.. e per quanto mi riguarda non credo di poterti dare una mano ulteriore:
http://blogs.ugidotnet.org/liberobalsamo/articles/85943.aspx
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

Gluck74 Profilo | Guru

Come puoi vedere dal codice ho usato due funzioni per impostare da codice la lingua inglese, come molti suggeriscono, ma questo non ha risolto il problema.

Ho allora installato office 2007 ed aggiornato le PIAs, essento il server un Wondows 2008. L'errore in questione si è apparentemente risolto ma è apparso un nuovo errore: Accesso negato al file.

Ho allora seguito i consigli trovati in alcuni blog, canfigurando le DCOM, ed il problema si è risolto.
http://blog.crowe.co.nz/archive/2006/03/02/589.aspx




Comunque microsoft ufficialmente non supporta l'automazione Server Side (asp.net) di office, e consiglia altre soluzioni........
http://bytes.com/topic/asp-net/answers/669031-microsoft-office-interop-excel
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5