Ultimamente ho affrontato il capitolo “interoperabilità tra ASP.NET 2.0 ed Excel”, che all’apparenza sembrava semplice da gestire come nelle applicazioni Windows Forms. Di fatti non lo è, in quanto si rischia di lasciare appesi i processi di EXCEL.EXE sul server web IIS 5.0/6.0.
Dopo aver usato i componenti PIA e la funzione Marshal.ReleaseComObject mi aspettavo di chiudere i processi COM di Excel. Ma niente.
Ne sono venuto fuori sfruttando il Late Binding, senza utilizzare i PIA, affidandomi invece alla vecchia istruzione CreateObject che si utilizzava nelle pagine ASP 3.0, dichiarando tutti gli oggetti di Excel in Object anziche i tipi del namespace Microsoft.Office.Interop.Excel
In più bisogna ricordare di rilasciare dalla memoria gli oggetti in sequenza, dall’ultimo al primo chiamato come suggerisce il bravo Antony