使い方を教えてくださいモディにASP.Net Webアプリですか?
質問
立ちたいと思っていまOCRラッパーの図書館のMicrosoft Officeのイメージのスキャン、編集、変COM APIでは、コンソールアプリの走りを現地で正、テストです。
残念なものを開始いがひどく時を融合させようという試みで、WCFサービスとして走行ASP.Net Webアプリケーションの下IIS6.また課題と無料のモディCOMオブジェクトがふんだんに例のwebることに助けられました。
しかし、問題は依然として残っている。ま再起動IIS、新鮮な展開のwebアプリケーション、最初の数OCR試作品です。退去する場合で30分ほど、その他の要求を取得しまサーバを再起動する必要がありこのように:
サーバーに投げます。(例外からHRESULT:0x80010105(RPC_E_SERVERFAULT)):でモディ.DocumentClass.Create(String FileOpen)
これからの要求に失敗しまい、OCR、またはリセットIISのが始まります。
また本アプリでの独自のアプリ用プール、下のアイデンティティとローカル管理者権である。
更新:この問題解決することができるようにOCRものです。表示されますが、モディ図書館がいなくなってしまったことは、我々は管理コードで洗浄後も、産卵に新しいプロセスの各OCR要求どのように私の状況です。
こちらではの機能を実行するのOCR:
public class ImageReader : IDisposable
{
private MODI.Document _document;
private MODI.Images _images;
private MODI.Image _image;
private MODI.Layout _layout;
private ManualResetEvent _completedOCR = new ManualResetEvent(false);
// SNIP - Code removed for clarity
private string PerformMODI(string fileName)
{
_document = new MODI.Document();
_document.OnOCRProgress += new MODI._IDocumentEvents_OnOCRProgressEventHandler(_document_OnOCRProgress);
_document.Create(fileName);
_document.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
_completedOCR.WaitOne(5000);
_document.Save();
_images = _document.Images;
_image = (MODI.Image)_images[0];
_layout = _image.Layout;
string text = _layout.Text;
_document.Close(false);
return text;
}
void _document_OnOCRProgress(int Progress, ref bool Cancel)
{
if (Progress == 100)
{
_completedOCR.Set();
}
}
private static void SetComObjectToNull(params object[] objects)
{
for (int i = 0; i < objects.Length; i++)
{
object o = objects[i];
if (o != null)
{
Marshal.FinalReleaseComObject(o);
o = null;
}
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
public void Dispose()
{
SetComObjectToNull(_layout, _image, _images, _document);
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
その後、インスタンスを生成するImageReaderのインスタンス内の使用のブロック(通IDisposable.廃棄上の口)
呼び出し整理.FinalReleaseComObjectを指導すべきは、CLRのCOMオブジェクトなんで、えいがの症状をしております。
そのような、このコード以外のIIS、と言うコンソールアプリに思うので弾証明することにあります。できます。
他のコンポーネントをこの診断ではこの問題を解決する大きな助けそもそもの私の回答のupvoteのようなよ!;-)
よろしく!
解決
いうのOCR部のアプリ のプロセス.
このサービスまでトンの柔軟性
- でも定義でき、単純な終点のごwebアプリケーションアクセスで経由でリモは、WCF.
- さんが洋ナシの形状及び図書館はすべて手できるサービス開始別のプロセス毎に必要なものを行う。これま極端に安全では小型の余分な負担となります。いると想定する人はいないでしょう OCRより高額となりますのでより紡糸プロセス.
- ときは、インスタンス周辺のCOMオブジェクト、メモリの開始漏れを再開することができます自分自身に影響を与えずに、ウェブサイトの場合は注意).
個人的には思ったのは、visual+IIS=悲しみ
他のヒント
モディは非常にwonkyきく、特に走IIS.私の経験がその場で発音を確認することがることがで遅くものだくことによる誤差を追加します。WaitForPendingFinalizers()後ます。収集していました。ついて興味のある方はもちろん、私は書いてもらった 第 ことがありますか?
きを再現した問題の小さなコンソール-アプリケーション?かな眠りのために30分くるのですか?
ベストの解決方法のようなことは分離でえが必要になってしまいました。さんに心かる。
またこのエラーは一週間前に、試験後のソフトウェア技術をここにその解決の問題です。についてご説明させていただき手によってよかったです。
私の場合はいwindowsのサービスruning加工からフォルダーの問題が生じた場合20以上の文書、投のエラー:例外からHRESULT:0x80010105(RPC_E_SERVERFAULT).
私のコードしたメソッドを呼び出された検出書のフォルダに、このインスタンスのホ書(モディ.文書_document=新しいモディ.Document();)といった工程にファイルは、この原因のエラー!!
この溶液に一つだけ問題がグローバルのインスタンスをモディ.文書、プロセスの全ての書類をお願いいことだと思っていて一つのインスタンスruning私のサービスです。
いる方向にあるものではないです。