Como você abre um arquivo InfoPath 2007 programaticamente a partir de um serviço?

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

  •  08-07-2019
  •  | 
  •  

Pergunta

Eu estou tentando abrir um arquivo InfoPath 2007 programaticamente a partir de um serviço do Windows, mas eu recebo o seguinte erro:

System.Runtime.InteropServices.COMException (0x80043000): O InfoPath não pode abrir o seguinte arquivo: C: \ path \ datafile.xml. Não há armazenamento suficiente está disponível para concluir esta operação.

Este arquivo abre corretamente no designer do InfoPath. Também corre programaticamente como um aplicativo WinForms. Mas quando você tenta para executar como um serviço do Windows, ele explode.

Tenho consultado o poderoso Google. Os dois resultados principais que voltam são XML seja malformado (não a causa, como o formulário é aberto corretamente manualmente) ou algo a ver com a tentativa de acessar um banco de dados (o que eu não estou fazendo).

Alguém sabe como fazer isso? Existem permissões eu preciso para definir sobre o serviço?

Update:

Como pelo pedido Anders, aqui está o código. Note-se que este pode não ser o código exato que eu estava trabalhando com 6 meses atrás, quando eu originalmente publicado a questão. Temos desde mudou-se para usar XtraReports, como parece muito mais fácil trabalhar com e tem menos desses erros enigmáticos. Gostaria, no entanto, como para resolver esta questão para qualquer pessoa que vem e pode precisar de uma resposta.

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 { }
}
Foi útil?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top