¿Cómo se abre un archivo de InfoPath 2007 mediante programación desde un servicio?

StackOverflow https://stackoverflow.com/questions/303325

  •  08-07-2019
  •  | 
  •  

Pregunta

Estoy intentando abrir un archivo de InfoPath 2007 mediante programación desde un servicio de Windows, pero aparece el siguiente error:

  

System.Runtime.InteropServices.COMException   (0x80043000): InfoPath no puede abrir el   siguiente archivo: C: \ ruta \ datafile.xml.   No hay suficiente almacenamiento disponible para   complete esta operación.

Este archivo se abre correctamente en el diseñador de InfoPath. También se ejecuta mediante programación como una aplicación WinForms. Pero cuando intenta ejecutarse como un servicio de Windows, explota.

He consultado al poderoso Google. Los dos resultados principales que se obtienen son XML con formato incorrecto (no la causa, ya que el formulario se abre correctamente de forma manual) o algo relacionado con el acceso a una base de datos (que no estoy haciendo).

¿Alguien sabe cómo hacer esto? ¿Hay permisos que necesito establecer en el servicio?

Actualización:

Según la solicitud de Anders, aquí está el código. Tenga en cuenta que este puede no ser el código exacto con el que estaba trabajando hace 6 meses cuando publiqué originalmente la pregunta. Desde entonces, hemos pasado a usar XtraReports, ya que parece mucho más fácil trabajar con él y tiene menos de estos errores crípticos. Sin embargo, me gustaría resolver esta pregunta para cualquier otra persona que venga y necesite una respuesta.

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 { }
}
¿Fue útil?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top