Je pensais que j'avais une solution de travail pour convertir des fichiers .mdi en PDF en utilisant le modèle d'objet Microsoft Office Document Imaging. La solution est dans un service Windows, mais maintenant je suis confronté à des erreurs sur lesquelles je n'arrive pas à trouver d'informations.Aide pour le débogage des erreurs COM? (.mdi en .pdf conversions de fichiers en utilisant Microsoft Office Document Imaging)
L'exception que je reçois est:
The server threw an exception. (Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT)) System.Runtime.InteropServices.COMException (0x80010105): The server threw an exception. (Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT))
at MODI.DocumentClass.Create(String FileOpen) at DocumentStore.Mdi2PDF(String path, String newPath)
Ensuite, dans l'Observateur d'événements il y a l'erreur d'application suivante:
Faulting application MyWindowsServiceName.exe, version 1.0.0.0, time stamp 0x4b97f185, faulting module mso.dll, version 12.0.6425.1000, time stamp 0x49d65443, exception code 0xc0000005, fault offset 0x0000bd8e, process id 0xa5c, application start time 0x01cac08cf032914b.
Voici la méthode qui fait la conversion:
private int? Mdi2PDF(String path, String newPath)
{
int? pageCount = null;
string tmpTif = Path.GetTempFileName();
MODI.Document mdiDoc = new MODI.Document();
mdiDoc.Create(path);
mdiDoc.SaveAs(tmpTif,
MODI.MiFILE_FORMAT.miFILE_FORMAT_TIFF_LOSSLESS,
MODI.MiCOMP_LEVEL.miCOMP_LEVEL_HIGH);
mdiDoc.Close(false);
pageCount = Tiff2PDF(tmpTif, newPath);
if (File.Exists(tmpTif))
File.Delete(tmpTif);
return pageCount;
}
J'ai supprimé tous les threads du service en invoquant ceci, de sorte que seul le thread primaire était l'initialisation de l'objet MODI, mais toujours l'erreur, donc il ne semble pas être lié au thread.
J'ai également construit une application de console convertissant des centaines de documents et n'a pas obtenu l'exception. Par conséquent, cela semble provenir de la création de trop nombreuses instances de l'objet MODI, mais uniquement instanciées dans un service? Cela n'a pas vraiment de sens.
Quelqu'un at-il des indices sur ces erreurs et comment les déboguer davantage?
Savez-vous quel appel MODI échoue? Lors de l'exécution en tant qu'application console droite, plutôt qu'en tant que service, obtenez-vous la même exception? – Ants
C'est dans l'appel de création (j'ai mis à jour la question avec la trace de la pile). Je vais mettre en place une version d'application de console. – RyanW