J'ai créé une DLL en C # qui prend en paramètre le nom du serveur Lotus Domino, le nom des notes de lotus de base de données et l'UNID d'un document de cet base.
Le but de cette dll est d'ouvrir en mode lecture le document ayant la UNID passé en paramètre, puis l'imprimer via l'imprimante installée sur la machine.
le problème est que, parfois, la DLL au lieu d'ouvrir le documents notes , elle ouvre la pièce jointe rattacher dans le présent document et
génère l'exception suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
COMException.Message = L'objet invoqué s'est déconnecté de ses clients. (Exception de HRESULT : 0x80010108 (RPC_E_DISCONNECTED))
COMException.ErrorCode = -2147417848
COMException.ToString = System.Runtime.InteropServices.COMException (0x80010108): L'objet invoqu‚ s'est d‚connect‚ de ses clients. (Exception de HRESULT : 0x80010108 (RPC_E_DISCONNECTED))
   … System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
   … System.Dynamic.ComRuntimeHelpers.GetITypeInfoFromIDispatch(IDispatch dispatch, Boolean throwIfMissingExpectedTypeInfo)
   … System.Dynamic.IDispatchComObject.EnsureScanDefinedMethods()
   … CallSite.Target(Closure , CallSite , ComObject , Int32 , Int32 , Int32 , Boolean )
   … CallSite.Target(Closure , CallSite , Object , Int32 , Int32 , Int32 , Boolean )
   … PrintNotesUIDocumentCOM_version_14_12_2015.PrintNotesDocument_version_14_12_2015.PrintFaxDocument_version_14_12_2015(String serverName, String baseName, String UNID)
COMException.Data = System.Collections.ListDictionaryInternal
vous trouverez ci-dessous le code du dll c#:
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
            /* Creat the notes session's object */ 
              System.Type typeNotes = System.Type.GetTypeFromProgID("Notes.NotesSession", "localhost", true); 
             dynamic oleSession = System.Activator.CreateInstance(typeNotes);

            /* Creat the notes dataBase's object */
            dynamic oleDb = oleSession.GetDatabase(serverName, baseName);

            /*Creat the notes NotesUIWorkspace's object */
            System.Type typeNotesUI = System.Type.GetTypeFromProgID("Notes.NotesUIWorkspace", "localhost", true);
            dynamic oleWK = System.Activator.CreateInstance(typeNotesUI);

            /* Open the notes dataBase's  */
            dynamic objDbUi = oleWK.OpenDatabase(serverName, baseName);

            dynamic oleDoc = oleDb.GetDocumentByUNID(UNID);

            Thread.Sleep(500);
            /*  opens the document having universal ID given as an argument  in the view in Edit mode.
             EDITDOCUMENT Return a notesUIDocument :oleUIDoc */
            dynamic oleUIDoc = null;

            if (oleDoc != null)
            {
                Console.WriteLine("/C#\\ befor editdocument ");
                 oleUIDoc = oleWK.EDITDOCUMENT(false, oleDoc, false,"",true,false);

                Console.WriteLine("/C#\\ after editdocument  ");
            }
            else
            {
                Console.WriteLine("/C#\\ oledoc = null  ");
            }

            /* Print the curent Notes Document previously set */
            dynamic x = oleUIDoc.Print(0, 0, 0, false);

            oleUIDoc.close();

            /* Close the previously open notes dataBase */
            dynamic oleUIDB = oleWK.CurrentDatabase();

            oleUIDB.close();

            oleDoc = null;
            oleUIDoc = null;
            oleWK = null;
            oleDb = null;
            oleUIDB = null;
            oleSession = null;