2016-05-30 74 views
0

我在ASP.NET Web應用程序中使用Pdf2Text。 Web界面允許上傳PDF文件並將其轉換爲文本。要轉換爲文本,我使用下面的C#函數,它依賴於通過Process庫運行Pdf2Text程序。如何在Web應用程序中使用Process時修復DirectoryNotFoundException

void ExtractOCR(string input, string output) 
{ 
    ProcessStartInfo startInfo = new ProcessStartInfo(); 
    startInfo.CreateNoWindow = true; 
    startInfo.UseShellExecute = true; 
    startInfo.FileName = Server.MapPath("ocr/Pdf2Text.exe"); 
    startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
    startInfo.Arguments = input + " " + output; 

    Process exeProcess; 
    using (exeProcess = Process.Start(startInfo)) 
    { 
     exeProcess.WaitForExit(); 
    } 
} 

我仔細檢查了輸入和輸出路徑都是有效的。但是,當我運行Web應用程序時,出現以下錯誤。

An unhandled exception ('System.IO.DirectoryNotFoundException') occurred in Pdf2Text.exe

我已經試過了剛剛在時間調試器,但它甚至不會因爲某些原因運行。 Pdf2Text是一個預編譯文件,我沒有它的源代碼。我相信this是該文件的下載網站,但不是100%確定。我在網上查了一下,找到類似錯誤的解決方案,但都沒有成功。

+0

在錯誤消息中很明顯,指定的目錄是它們在給定的路徑中 –

+1

也許,池的用戶無法訪問目錄。 – GraDea

+0

謝謝!這實際上解決了它! –

回答

0

謝謝@GraDea建議查看池權限到web應用程序目錄,這是解決方案。

該Web應用程序位於自定義位置(不是缺省的ASP服務器目錄inetpub\wwwroot)。在建議之後,我嘗試將池用戶添加到Web應用程序的自定義位置,但這似乎不起作用。接下來,我將Web應用程序移動到inetpub\wwwroot位置,並將池用戶添加到該文件夾​​,通過IIS重新啓動該站點,現在一切恢復正常。

爲了將來可以引用任何人,最簡單的解決方法是確保您的Web應用程序位於默認的IIS服務器目錄中,並且您的站點池的用戶名已添加到應用程序文件夾的security permissions。我沒有嘗試修復自定義位置,因爲它對我來說並不重要,但我猜測它最有可能還會涉及添加必需的IIS默認池用戶(例如IIS_IUSRS)和站點池的用戶。

相關問題