mon problème est: j'utilise ghostscript pour transformer certains fichiers PDF en fichiers jpeg puis les rendre dans un contrôle silverlight. Je transformais le fichier pdf en utilisant:Ghostscript plante le serveur
public void PdfToJpg(string ghostScriptPath, string input, string output) {
timer1.Enabled = true;
//if the pdf has more than 1 file (ex. 3) then 3 jpeg files will be outputed
String ars = "-dNOPAUSE -sDEVICE=jpeg -r300 -o" + output + "-%d.jpeg " + input;
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = ars;
startInfo.FileName = ghostScriptPath;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
using (Process exeProcess = Process.Start(startInfo)) {
exeProcess.WaitForExit();
}
}
puis enregistrez le numéro de page et l'octet page [] dans un dictionnaire, le dictionnaire dans une session et l'envoyer avec un service permis silverlight, et de les envoyer à la page ASPX que contient le contrôle silverlight (avec Response.redirect (page.aspx)). Tout fonctionne bien mais parfois le serveur (Cassini ou IIS) tombe en panne, ce qui signifie que les fichiers sont convertis mais que la redirection ne se produit jamais, simplement la page reste en état de chargement. Je dois fermer le cassini avec "End Process" ou Redémarrer le serveur IIS afin que le processus fonctionne à nouveau. Je ne pense pas que le problème est avec le service parce que j'ai un processus similaire à envoyer à l'application Silverlight un octet [] de fichier audio et tout fonctionne bien, le serveur ne reste jamais bloqué, donc je pense que c'est à cause de ghostscript .. ., Si quelqu'un a des idées. Aussi j'utilise elmah et aucune erreur n'est signalée ... et quand dans le débogage quand je clique sur le bouton d'affichage qui contient la conversion et d'autres parties du processus il n'entrent pas l'événement de clic mais la conversion est faite (pas la redirection), je ne sais pas comment c'est possible ..., merci. si sûr est quelque chose avec Ghostscript
MISE À JOUR: j'ai changé mon code pour:
using (Process convertProc = new Process()) {
convertProc.StartInfo.FileName = ghostScriptPath;
convertProc.StartInfo.Arguments = args;
//convertProc.StartInfo.UseShellExecute = false;
//convertProc.StartInfo.RedirectStandardOutput = true;
convertProc.StartInfo.CreateNoWindow = true;
convertProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
convertProc.Start();
ThreadedKill(convertProc.Id);
convertProc.PriorityClass = ProcessPriorityClass.Normal;
convertProc.WaitForExit();
}
et si le UseShellExecute et redirectoutput sont commentées le serveur va « sauvage » parfois et sinon, le code court parfait à chaque fois, mais avec cela la fenêtre du processus ghostscript apparaît, je ne veux pas ça. Pour ne pas apparaître je dois commenter thise lignes ou mettre useshellexecute à true et commenter redirectoutput qui cause l'échec parfois. Que puis-je faire? et ce qui est redirectStandardOutput et ce qu'il fait ..., dind't comprendre sur MSDN ...
MISE À JOUR 2: a changé mon gswin64.exe à gswin64c.exe pour l'application de console et maintenant cette fenêtre dont je parlais isn Je ne montre plus. Aucun code devenu fou ..., du moins pas encore ..
Pour résoudre ce problème, vous devez probablement fournir des informations plus spécifiques sur l'erreur, par ex. une exception avec une trace de pile ou au moins un code d'erreur Windows. Qu'est-ce qui est enregistré dans le journal des événements? –
c'est le problème, aucune exception, aucune erreur dans l'Observateur d'événements, rien .., dans TaskManager le gswin64.exe ne fonctionne pas lorsque la pendaison se produit. – adi1989
GPL Ghostscript 9.06 (2012-08-08) gswin64.exe – adi1989