2016-05-30 3 views
0

私はASP.NET WebアプリケーションでPdf2Textを使用しています。 Webインターフェイスを使用すると、PDFファイルをアップロードしてテキストに変換できます。テキストに変換するには、私は、Processライブラリ経由でPdf2Textプログラムを実行することに依存する、以下のC#関数を使用します。Web Appでプロセスを使用中に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アプリケーションがカスタムロケーション(デフォルトのASPサーバーディレクトリinetpub\wwwrootではなく)に配置されていました。提案の後、私はプールのユーザーをWebアプリケーションのカスタムの場所に追加しようとしましたが、うまくいかないようです。次に、Webアプリケーションをinetpub\wwwrootの場所に移動し、プールユーザーをフォルダに追加し、IIS経由でサイトを再起動して、すべて正常に戻ります。

今後誰かに参照する場合は、WebアプリケーションがデフォルトのIISサーバーディレクトリにあり、サイトプールのユーザー名がアプリケーションフォルダのsecurity permissionsに追加されていることを確認するのが最も簡単な方法です。私はそれほど重要ではないので、私はカスタムの場所の修正を試していませんが、おそらくIISのデフォルトプールユーザー(IIS_IUSRSなど)とサイトプールのユーザーを追加する必要があると思います。

関連する問題