IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Comportement ASP.Net/VB.Net et Word sur Serveur IIS7


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut Comportement ASP.Net/VB.Net et Word sur Serveur IIS7


    J'ai développé une application web (plutôt projet site web) qui permet de créer des rapports en format Word. Lorsque je la test en local via VS2010, je n'ai aucun problème mais une fois sur le serveur, lorsque je veux créer un fichier Word via mon fichier modèle (dotx), cela ne marche plus. Voici le message en retour lors de la tentative de création d'un objet Word:
    Word n'a pas pu lire ce document. Il est peut-être corrompu.
    Essayez l'une ou plusieurs des opérations suivantes :
    * Ouvrez et réparez le fichier.
    * Ouvrez le fichier avec le convertisseur Récupération de texte.
    Mon code, un peu long, je fournit le constructeur (j'ai tout englobé dans une classe):
    Code vbnet : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Imports IWord = Microsoft.Office.Interop.Word
    Imports System.Runtime.InteropServices.Marshal
    Code vbnet : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                Protected _word As IWord.Application
                Protected _doc As IWord.Document
    Code vbnet : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
                Sub New(ByVal wordModel As String, Optional ByVal showWordInstance As Boolean = True)
                    Try
                        _word = New IWord.Application
     
                        _word.Visible = showWordInstance
                        _doc = _word.Documents.Add(wordModel)
     
                        _docPath = wordModel
                    Catch ex As Exception
                        If Not IsNothing(_doc) Then
                            _doc.Close(False)
                        End If
                        If Not IsNothing(_word) Then
                            _word.Quit()
                        End If
     
                        Throw ex
                    End Try
                End Sub
    Ma méthode Dispose:
    Code vbnet : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
                Protected Overridable Sub Dispose(disposing As Boolean)
                    If Not Me.disposedValue Then
                        If disposing Then
                        End If
     
                        ReleaseComObject(_doc)
                        ReleaseComObject(_word)
     
                        GC.Collect()
                        GC.WaitForPendingFinalizers()
                    End If
                    Me.disposedValue = True
                End Sub
    Autre chose que j'ai également remarqué, une fois que je lance le programme sur le serveur, il ne me quitte pas WINWORD.EXE et si dans le Catch de l'exception du constructeur j'utilise ReleaseComObject, le programme ne rend pas la main. J'utilise l'emprunt d'identité (pas le choix) dans le fichier Web.config et du coup, j'ai rajouté dans la partie Sécurité du fichier modèle et de WINWORD.EXE ASP NET_2006 mais ça ne donne rien.

    Est-ce que quelqu'un pourrait me donner la bonne marche à suivre s'il vous plaît ?


    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut


    Je remonte le sujet car je suis toujours preneur d'une solution...
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Je ne connais pas la solution a ton probleme, mais tes administrateurs systeme doivent s'arracher les cheveux si tu as installe Word sur un serveur de prod

    Il vaut mieux eviter de faire ca, et plutot d'utiliser des librairies qui gerent l'OpenXML. Elles n'ont pas besoin d'Office pour fonctionner. Par exemple : EPPlus.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    A ce que j'en lis, c'est pour Excel ton EPPlus...
    Cela dit, vu l'avancée du projet et l'urgence dans laquelle il faut le finir, je ne peux plus vraiment changer de technique de génération de fichier Word.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre émérite
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Par défaut
    Salut,

    Pour appuyer le message de DotNetMat :
    Installer word sur un serveur ne peut que causer des problèmes.
    Exemple de problème rencontré :
    • Le process winword qui n'est pas jamais arreté... Obligé de faire un deamon pour killer le process...
    • Fuite mémoire du process Winword...



    Aujourd'hui je ai utilisé pour la plupart du temps des librairies mais plus aucune problème.

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut


    D'accord, je vais voir du côté de DocX, je vais voir surtout si l'adaptation n'est pas trop longue.

    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Franck.H Voir le message
    A ce que j'en lis, c'est pour Excel ton EPPlus...
    Cela dit, vu l'avancée du projet et l'urgence dans laquelle il faut le finir, je ne peux plus vraiment changer de technique de génération de fichier Word.
    Au temps pour moi ! EPPlus est bien pour Excel. Merci katkiller
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/03/2010, 11h07
  2. [.net 2.0] Open office sur serveur Web
    Par cyrilc dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/02/2009, 15h36
  3. Quel langage entre vb.net c#.net c++.net java ?
    Par heeedi dans le forum Débuter
    Réponses: 7
    Dernier message: 13/12/2008, 21h53
  4. Réponses: 1
    Dernier message: 29/04/2008, 23h53
  5. Réponses: 5
    Dernier message: 21/11/2007, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo