2012-06-08 25 views
1

我試圖調用從C#CONVERT.EXE槽工藝類特定的圖像轉換爲另一個這樣的格式:爲什麼我的過程只是打開一個空白窗口並立即關閉它?

File.WriteAllBytes(inputFilePath, Convert.FromBase64String(image.Content)); 
Elmah.ErrorLog.GetDefault(HttpContext.Current).Log(new Error(new Exception("Succesfully wrote the image to: " + inputFilePath))); 

var proc = new Process(); 
proc.StartInfo.Arguments = string.Format("{0} {1}", inputFilePath, outputFilePath); 

proc.StartInfo.FileName = @"c:\Program Files (x86)\ImageMagick-6.7.7-Q16\convert.exe"; 
proc.StartInfo.CreateNoWindow = false; 
proc.StartInfo.UseShellExecute = false; 
proc.Start(); 
proc.WaitForExit(); 

我不明白爲什麼它會打開一個命令提示符,然後立即關閉它.. 。你看到代碼中有錯誤嗎? convert.exe的路徑確實很好......

+0

可能會遇到錯誤並立即終止。 (你正在調用一個控制檯應用程序,對嗎?)任何機會你可以看到輸出消失之前? –

+0

你是說你不想讓命令提示符顯示,或者你說它不應該快速關閉? –

+0

您的輸入和/或輸出路徑中是否可能有空格,您確定它們是有效的嗎? ...您應該輸出要運行的文件和控制檯的路徑,以測試是否可以手動執行命令行中的文件。 –

回答

2

您可以將流附加到Process對象以捕獲輸出。

看到msdn doc

+0

我現在發現轉換工作很好,但我確實希望捕獲輸出,所以我會標記你的答案滿足我的需要。 –

4

您的Web應用程序在IIS用戶的上下文中運行,它可能無法獲得執行CONVERT.EXE。你可以嘗試在特定用戶下運行IIS(就像你,如果convert.exe適用於你),或者以某種方式授予訪問權限,讓convert.exe運行)。

+0

好的,如果你要冷靜下來,至少讓我知道爲什麼。這是一個完全可行的可能性。 –

+0

我upvoted你取消這種非合法downvote。 – guiomie

相關問題