title: excel interop unable to start server exception after several calls
body: <p>I have an asp.net MVC Webapplication who uses the excel interop to open a csv in an excel save the file as an xlsx and load the bytes from that file. These bytes are then passed as a download.</p>
  
  <p>So far everything works as expected. but after the 6 download I get the following exception. Unfortunately it's on german, since the server is setup in german. But the exception message is something like "80080005 starting the server failed".</p>
  
  <pre><code>Die COM-Klassenfactory für die Komponente mit CLSID {00024500-0000-0000-C000-000000000046} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80080005 Starten des Servers fehlgeschlagen (Ausnahme von HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
  
      Beschreibung: Unbehandelte Ausnahme beim Ausführen der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde. 
  
      Ausnahmedetails: System.Runtime.InteropServices.COMException: Die COM-Klassenfactory für die Komponente mit CLSID {00024500-0000-0000-C000-000000000046} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80080005 Starten des Servers fehlgeschlagen (Ausnahme von HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
  </code></pre>
  
  <p>When I restart the website, it works again for the next 5-7 downloads.</p>
  
  <p>here is my code for the excel:</p>
  
  <pre><code>private byte[] WriteExcel(SelectionResult result)
  {
          var csvPath = Path.Combine(Settings.Default.FileGenerationPath, DateTime.Now.ToString("yyMMMddhhmmss") + "_" +new Random().Next(1000, 9999)+".csv");
          var excelPath = Path.Combine(Settings.Default.FileGenerationPath, DateTime.Now.ToString("yyMMMddhhmmss") + "_" + new Random().Next(1000, 9999)+".xlsx");
  
          var excelApp = new Application();
          File.WriteAllBytes(csvPath, WriteCsv(result, true));
  
          var excelWorkbooks = excelApp.Workbooks;
          excelWorkbooks.Open(csvPath, Delimiter: ",");
          var workbook = excelApp.ActiveWorkbook;
  
          workbook.SaveAs(excelPath, XlFileFormat.xlOpenXMLWorkbook);
  
          excelWorkbooks.Close();
          excelApp.Quit();
  
          var bytes = File.ReadAllBytes(excelPath);
          File.Delete(csvPath);
          File.Delete(excelPath);
          return bytes;
      }
  </code></pre>
  
  <p>What do I miss?</p>