none
Não consigo executar new Microsoft.Office.Interop.Word.ApplicationClass(); no servidor RRS feed

  • Pergunta

  • Boas,

    Estou a usar o interop v14.0.0 para conseguir converter documentos word para pdf assim com excel.

    O excel funciona tudo correcto, Já com o word a minha página web para quando declaro "new Microsoft.Office.Interop.Word.ApplicationClass();"

    Se for em localhost funciona.

    Para conseguir ter o excel a funcionar tive de instalar no meu servidor o VS2010 Pro com o office 2010 Std.

    Alguem pode ajudar

    Obrigado.

    quarta-feira, 31 de outubro de 2012 12:38

Todas as Respostas

  • Amigo, bom dia

    veja se instalando as biblioteca de INTEROP seu problema será resolvido

    http://www.microsoft.com/en-us/download/details.aspx?id=3508


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    quarta-feira, 31 de outubro de 2012 12:53
    Moderador
  • Boas

    sim tenho as bibliotecas instaladas.

    



    meu código


    string saveLocationPdF = "c:/Temp/wsInterop/" + Path.GetFileNameWithoutExtension(FileUpload1.FileName) + ".pdf";

            string Files = string.Empty;
            int fileLen = FileUpload1.PostedFile.ContentLength;

            byte[] inputFile = new byte[fileLen - 1];

            inputFile = FileUpload1.FileBytes;

            string fileName = "c:/Temp/wsInterop/" + DateTime.Now.ToString().Replace(":", "").Replace(" ", "") + Path.GetFileNameWithoutExtension(FileUpload1.FileName) + Path.GetExtension(FileUpload1.FileName);

            bool File = ByteArrayToFile(fileName, inputFile);

            if (File)
            {


                Microsoft.Office.Interop.Word.Application msDoc = new Microsoft.Office.Interop.Word.Application();


                object objMissing = Type.Missing;

                Document docWord = null;


                try
                {

                    msDoc.Visible = false;
                    docWord = msDoc.Documents.Open(fileName, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing);
                    msDoc.Application.Visible = false;


                    string paramExportFilePath = saveLocationPdF;
                    WdExportFormat paramExportFormat = WdExportFormat.wdExportFormatPDF;
                    bool paramOpenAfterExport = false;
                    WdExportOptimizeFor paramExportOptimizeFor =
                        WdExportOptimizeFor.wdExportOptimizeForPrint;
                    WdExportRange paramExportRange = WdExportRange.wdExportAllDocument;
                    int paramStartPage = 0;
                    int paramEndPage = 0;
                    WdExportItem paramExportItem = WdExportItem.wdExportDocumentContent;
                    bool paramIncludeDocProps = true;
                    bool paramKeepIRM = true;
                    WdExportCreateBookmarks paramCreateBookmarks =
                        WdExportCreateBookmarks.wdExportCreateWordBookmarks;
                    bool paramDocStructureTags = true;
                    bool paramBitmapMissingFonts = true;
                    bool paramUseISO19005_1 = false;


                    docWord.ExportAsFixedFormat(paramExportFilePath, paramExportFormat, paramOpenAfterExport, paramExportOptimizeFor, paramExportRange, paramStartPage,
                    paramEndPage, paramExportItem, paramIncludeDocProps,
                    paramKeepIRM, paramCreateBookmarks, paramDocStructureTags,
                    paramBitmapMissingFonts, paramUseISO19005_1,
                    objMissing);





                }
                catch
                {

                }


                msDoc.Quit();
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }

    quarta-feira, 31 de outubro de 2012 14:46
  • seu servidor é 64 bits ? 

    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    quarta-feira, 31 de outubro de 2012 15:54
    Moderador
  • Não,

    Caracteristicas do servidor: windows 2003 32bit, com o iis 6.0

    Programas instalados no servidor: office Profissional 2010 visual studio Profissional 2010.Estou  a desenvolver directamente no servidor, quando corro no visual studio corre perfeito, quando efectuo uma publicação do projecto e corro a aplicação pelo o iis é quando o word não dá.

    quarta-feira, 31 de outubro de 2012 16:52
  • joão, sua aplicação está usando impersonate ? tente usar a aplicação com um usuário que seja admininistrador. Outro ponto, crie um pool único para seu site ou diretório virtual e defina uma credencial que tenha permissões administrativas para ele. Possivelmente isto é um problema de permissão.

    você também pode tentar rastrar o erro com o Process Monitor http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx. Só é complicado


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    quarta-feira, 31 de outubro de 2012 16:57
    Moderador
  • Sim estou a usar. Por defeito tenho a pool para o "Network Services", e o meu directorio permite users anonimos. Já exprimentei entrar com o meu utilizadorque é administrador da máquina. Continuo sem ter sucesso no word. No component Services no computers, My computer ja dei permissoes ao "Network Services" e a todos os utilizadores do iis
    quarta-feira, 31 de outubro de 2012 17:10
  • JOão, vc ja alterou o usuário do pool para um que seja admin da máquina ? depois fazer essa alteração é bom reiniciar o IIS (IISRESET)

    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    quarta-feira, 31 de outubro de 2012 17:26
    Moderador
  • mesmo apos ter efectuado o restart do IIS não deu
    quarta-feira, 31 de outubro de 2012 17:39
  • questão mais complicada, so rastreando, existem duas maneiras ou com o procmon que é mais dificil ou com o Fuslogvw que é um pouco mais simples

    http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.71).aspx

    desculpe não conseguir de forma mais especifica


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    quarta-feira, 31 de outubro de 2012 17:44
    Moderador
  • Mesmo assim muito obrigado
    quarta-feira, 31 de outubro de 2012 17:49
  • Boas Olavo, espero que inda veja esta última pergunta. Com o meu user consegui gerar tudo correctamente dentro do servidor passando pelo IIS. Se for de fora pede me sempre autenticação
    quarta-feira, 31 de outubro de 2012 18:03
  • como está a autenticação ? está aceitando anonimo ? 

    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    quarta-feira, 31 de outubro de 2012 18:06
    Moderador
  • não, quando tento aceder a pagina por outro computador não está permitindo.

    Somente no servidor

    quarta-feira, 31 de outubro de 2012 18:14
  • habilite o acesso anônimo

    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    quarta-feira, 31 de outubro de 2012 18:22
    Moderador
  • certo.. é isso mesmo..

    Muito muito muito obrigadão

    quarta-feira, 31 de outubro de 2012 18:23
  • João, se deu certo, por favor marque como respostas o que lhe ajudou a resolver seu problema

    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    quarta-feira, 31 de outubro de 2012 18:34
    Moderador