Come si apre un file di InfoPath 2007 a livello di codice da un servizio?
-
08-07-2019 - |
Domanda
Sto provando ad aprire un file di InfoPath 2007 a livello di codice da un servizio di Windows, ma ottengo il seguente errore:
System.Runtime.InteropServices.COMException (0x80043000): InfoPath non può aprire file seguente: C: \ path \ datafile.xml. Non è disponibile memoria sufficiente per completa questa operazione.
Questo file si apre correttamente nella finestra di progettazione di InfoPath. Funziona anche a livello di codice come un'applicazione WinForms. Ma quando si tenta di eseguire come servizio di Windows, esplode.
Ho consultato il potente Google. I due risultati principali che vengono restituiti sono XML non valido (non la causa, poiché il modulo si apre correttamente manualmente) o qualcosa a che fare con il tentativo di accedere a un database (cosa che non sto facendo).
Qualcuno sa come farlo? Ci sono autorizzazioni che devo impostare sul servizio?
Aggiornamento:
Come da richiesta Anders, ecco il codice. Nota che questo potrebbe non essere il codice esatto con cui stavo lavorando 6 mesi fa quando ho pubblicato la domanda. Da allora siamo passati all'utilizzo di XtraReports, poiché sembra molto più facile lavorare con e ha meno di questi errori criptici. Vorrei, tuttavia, risolvere questa domanda per chiunque si presenti e potrebbe aver bisogno di una risposta.
Microsoft.Office.Interop.InfoPath.Application infoApp = new Microsoft.Office.Interop.InfoPath.Application();
try
{
Microsoft.Office.Interop.InfoPath.XDocument xDoc = null;
xDoc = infoApp.XDocuments.Open(fileName, (int)Microsoft.Office.Interop.InfoPath.XdDocumentVersionMode.xdUseExistingVersion);
xDoc.PrintOut();
infoApp.XDocuments.Close(0);
}
catch (Exception ex)
{
//handle error here
}
finally
{
try
{
if (infoApp != null)
infoApp.Quit(false);
}
catch { }
}
Soluzione