Bonjour à tous !!!

J'ai un problème depuis pas mal de temps et qui commence sérieusement à gêner la progression de mon projet.
Je m'explique. J'ai une application iPhone qui récolte des données et les envoie vers un serveur ASP.NET contenant un script C# permettant de générer un word à partir de ces données. Tout ce processus fonctionne très bien la PREMIERE FOIS.
Si je ré-exécute ce code je reçois une erreur de mon serveur :

Détails de l'exception: </b>System.Runtime.InteropServices.COMException: Ce fichier est en lecture seule. (C:\inetpub\wwwroot\Documents\rapport.doc)
Cette erreur se produit à la ligne suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 nvDoc.SaveAs(ref fileName, ref missing, ref missing, ref missing, ref missing,
                        ref missing, ref missing, ref missing, ref missing, ref missing,
                        ref missing, ref missing, ref missing, ref missing, ref missing,
                        ref missing);

J'en conclu donc que le fichier que j'avais enregistré précédemment n'est pas fermé et pourtant j'ai bien les lignes suivantes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
// Fermer le document
             ((Microsoft.Office.Interop.Word._Document)nvDoc).Close(ref saveChanges, ref missing, ref missing);
 
            // Fermeture de word
             ((Microsoft.Office.Interop.Word._Application)msWord).Quit(ref missing, ref missing, ref missing);
Je n'ai pas d'erreur lors de ma première génération.. On dirait tout simplement qu'une fois le fichier généré, ce dernier ne se ferme pas. Je vous mets tout la fonction de génération :

Code : 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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
public void generateDocument()
        {
            // Connexion à Word
            string pathTemplates = Server.MapPath("./templates/");
            string pathDocuments = Server.MapPath("./Documents/");
            string pathImgBefore = Server.MapPath("./Upload/imageBefore.jpg");
            string pathImgAfter = Server.MapPath("./Upload/imageAfter.jpg");
            Object myFalse = false ;
            Object myTrue = true ;
 
            Microsoft.Office.Interop.Word.Application msWord = new Microsoft.Office.Interop.Word.Application();
            msWord.Visible = false; // mettez cette variable à true si vous souhaitez visualiser les opérations.
            object missing = System.Reflection.Missing.Value;
 
 
            // Attribuer le nom
            object fileName = pathDocuments + "rapport.doc";
 
            Microsoft.Office.Interop.Word.Document nvDoc = new Microsoft.Office.Interop.Word.Document();
 
            // Tester s'il s'agit d'un nouveau document ou d'un document existant.
            if (System.IO.File.Exists((string)fileName))
            {
                // ouvrir le document existant
                nvDoc = msWord.Documents.Open(ref fileName, ref missing, ref missing,
                            ref missing, ref missing, ref missing,
                            ref missing, ref missing, ref missing,
                            ref missing, ref missing, ref missing,
                            ref missing, ref missing, ref missing,
                            ref missing);
            }
            else
            {
                // Choisir le template
                object templateName = pathTemplates + "template2.dot";
                // Créer le document
                nvDoc = msWord.Documents.Add(ref templateName, ref missing, ref missing, ref missing);
            }
 
 
            // On remplit les champs du template
            object field = "date";
            nvDoc.FormFields.get_Item(ref field).Result = DateTime.Today.ToShortDateString();
            field = "choix1";
            nvDoc.FormFields.get_Item(ref field).Result = choix1;
            field = "choix2";
            nvDoc.FormFields.get_Item(ref field).Result = choix2;
 
            field = "controles";
 
            for (int i = 1; i < tabControles.Length; i++)
            {
                nvDoc.FormFields.get_Item(ref field).Result += "- " + tabControles[i];
 
            }
 
            field = "c1";
            nvDoc.FormFields.get_Item(ref field).Result = c1;
            field = "c2";
            nvDoc.FormFields.get_Item(ref field).Result = c2;
            field = "c3";
            nvDoc.FormFields.get_Item(ref field).Result = c3;
            field = "c4";
            nvDoc.FormFields.get_Item(ref field).Result = c4;
            field = "c5";
            nvDoc.FormFields.get_Item(ref field).Result = c5;
 
            field = "imgBefore";
            nvDoc.FormFields.get_Item(ref field).Result = "";
           Object imgRange = nvDoc.FormFields.get_Item(ref field).Range;
 
           nvDoc.InlineShapes.AddPicture(pathImgBefore, ref myFalse, ref myTrue, ref imgRange);
 
           field = "imgAfter";
           nvDoc.FormFields.get_Item(ref field).Result = "";
           imgRange = nvDoc.FormFields.get_Item(ref field).Range;
 
           nvDoc.InlineShapes.AddPicture(pathImgAfter, ref myFalse, ref myTrue, ref imgRange);
            //Fin remplissage des champs
 
 
            // Sauver le document
            nvDoc.SaveAs(ref fileName, ref missing, ref missing, ref missing, ref missing,
                        ref missing, ref missing, ref missing, ref missing, ref missing,
                        ref missing, ref missing, ref missing, ref missing, ref missing,
                        ref missing);
 
 
            object saveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdSaveChanges;
 
 
            // Fermer le document
             ((Microsoft.Office.Interop.Word._Document)nvDoc).Close(ref saveChanges, ref missing, ref missing);
 
            // Fermeture de word
             ((Microsoft.Office.Interop.Word._Application)msWord).Quit(ref missing, ref missing, ref missing);
        }
Je présente ce projet vendredi matin ... et dans l'ordre actuel des choses, pour pouvoir regénérer le fichier, je suis obligé d'aller sur le serveur ... faire un IISRESET et supprimer le fichier manuellement ....

Est ce que vous avez une idée de ce qui manque ou de ce qui cloche ?? Là je ne vois plus ....

Merci d'avance pour votre aide précieuse ...

MoKeS