トラブルシューティング
一般的なエラーを診断
多くの System.Web の失敗は、目に見える例外を発生させません:ページが空の 500 を返す、アイコンが 404 を返す、またはリクエストが決して戻らないことがあります。このページは観測結果に基づいて整理されています。引用されたメッセージは Doconut が生成する文字列そのものです。
一目でわかる症状
| 見た目 | 最も考えられる原因 | 対策 |
|---|---|---|
すべて のリクエストが空の 500 を返す | Application_Start 内の例外:ライセンスのないプラグイン、無効なオプション、不完全なファーム構成、または bin\ に存在しないバージョンを指定したバインディングリダイレクト | Windows イベントログの Application、ソース ASP.NET を確認してください。起動失敗 を参照 |
一部の MVC ページが空の 500 を返す | Razor は実行時にビューをコンパイルします:netstandard のファサードが <compilation> に存在しない、またはビューが C# 5 より新しいバージョン(?.、$"..."、nameof)を使用している | ファサードを追加してください(インストール)。ロジックをビューからコントローラへ移動します。 |
ページがハイフンやアクセントの代わりに —、… などを表示する | BOM(バイト順マーク)のないページファイルはサーバーの ANSI コードページで読み込まれます | <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" /> |
ブラウザのコンソールに HEAD /DocImage.axd?...&page=1 に対して 404 が表示されます | ハンドラが HEAD 動詞なしで登録されています | ハンドラ上の verb="GET,HEAD,POST" |
| ドキュメントは表示されますが、ツールバーのアイコンとロードスピナーが欠落しています | ResPath がリソースルートを指しているか、/ で始まっています | ResPath: 'doconut-res/images' |
/doconut-res/... requests answer 404 | リソースモジュールが登録されていない、runAllManagedModulesForAllRequests がオフになっている、または MVC ルーティングがパスを捕捉しています | <modules> エントリと routes.IgnoreRoute("doconut-res/{*pathInfo}") |
ビューアが The viewer handler could not be reached (no response). を報告 | BasePath が / で始まる('/myapp' が //myapp/… に変わる、別ホスト) | サイトルートで BasePath: '/'、仮想ディレクトリで 'myapp' |
ビューアが Please make sure your middleware is configured. を報告 | DocImage.axd が 404 と応答: ハンドラが Web.config になく、MVC ルーティングが捕捉したか、BasePath が別の場所を指す | <handlers> エントリ、routes.IgnoreRoute("{resource}.axd/{*pathInfo}")、および BasePath |
すべてのページに You Are Not Authorized To View This Page. が表示されます | ドキュメントがセッションステートなしのリクエストで開かれた、セッションステートがオフになっている、またはセッションクッキーが DocImage.axd に届かない | 参照: 権限がありません |
| Web Forms の変換が決して戻らない | ページが ConvertAsync でブロックされます — デッドロックです | Async="true" + RegisterAsyncTask(コンバータプラグイン) |
| すべてのページに評価用透かしが付いています | ライセンスが見つかりません — <site root>\wwwroot にありません | ライセンス設定 |
ウィジェットはロードされますが、最初のアクションが 404 を返します | ウィジェットが有効化されていない、またはその basePath が '/DocImage.axd' ではありません | options.Add…Widget()、および basePath: '/DocImage.axd' |
| サイト起動またはリサイクル後の最初のドキュメントは 1 分以上かかりますが、以降は高速です | ドキュメントエンジンは最初のオープン時にロードされ、リアルタイムウイルス対策がロード時にスキャンします | サイトを事前にウォームアップし、プールを稼働させ続けてください — 起動後の最初のドキュメント を参照 |
| 大きなアップロードで IIS エラーページが表示されます | アップロードが maxRequestLength (KB) または maxAllowedContentLength (バイト) を超えています | 最大ファイルまたはウィジェット上限を超えるように設定してください |
起動失敗
Application_Start でスローされた例外はブラウザに届きません:すべてのリクエストが空の 500 を返し、IIS ログには有用な情報がありません。例外は Windows イベントログ(イベントビューア → Windows ログ → Application、ソース ASP.NET)に記録されています。一般的な例は次のとおりです:
ライセンスのないプラグイン:
The Converter plugin is registered via AddPlugin but no active license grants Converter.
Remove the AddPlugin<...>() call or install a license (or trial/demo) that includes Converter.プラグインの Doconut.Viewer.<Capability>.lic は wwwroot にあり、Doconut.Viewer.lic の隣に置く必要があります。ライセンスが欠如している場合やレガシーな TRIAL ファイルがある場合、プラグイン機能は提供されません。
無効なオプション:
DoconutOptions.MiddlewarePath must be a non-empty path starting with '/'.
DoconutOptions.ResourcesPath must be a non-empty path starting with '/'.
DoconutOptions.MiddlewarePath and ResourcesPath must be different paths.ロードできないアセンブリ。 ASP.NET はアプリケーション起動時に bin\ 内のすべてのアセンブリをロードします。そのため、bin\ に存在しないバージョンを指定した Web.config のバインディングリダイレクトはサイト全体を停止させます。手動で編集する代わりに、NuGet が生成したリダイレクト(SDK スタイルプロジェクトの場合は bin\<YourApp>.dll.config から)をコピーし、パッケージ更新後に再度コピーしてください。
このページの閲覧権限がありません。
ページが拒否されたのは、要求された ASP.NET セッションがドキュメントの権限を取得していなかったためです。順に確認してください:
- オープンはセッションステートで実行されました。 MVC コントローラと Web Forms ページはそれを持っています。ドキュメントを開くカスタム
IHttpHandlerはSystem.Web.SessionState.IRequiresSessionStateを実装する必要があり、そうでなければセッションを付与できません。 - セッションステートが有効です。
<sessionState mode="Off" />はすべてのページを拒否します。 - クッキーがハンドラに届きます。 ウィジェットの同一オリジンリクエストは
ASP.NET_SessionIdを含みます;スクリプト、サーバー間呼び出し、またはクッキーなしのクロスオリジンページは含みません。 - Web ファーム: オープンはブラウザ (
DocOptions.BrowserId) にバインドし、ページはチケット (objViewer.View(token, access)) を渡します;すべてのノードが同じ署名キーを使用します。
拒否はステータス 200 で提供される画像で、約 2 KB です。ステータスコードのみをチェックするモニタはそれをページとしてカウントします。
ドキュメントセッションが見つかりません。ドキュメントを再度開いてください。
トークンが期限切れになった(スライディングウィンドウ、DocOptions.TimeOut、デフォルト 60 分)、ドキュメントが閉じられた、または単一サーバー上でアプリケーションプールがリサイクルされた可能性があります。リサイクルはスケジュール通り、すべての Web.config 編集時、そしてプールのアイドルタイムアウト(IIS のデフォルトは 20 分)後に発生します。新しいトークンのためにドキュメントを再度開いてください。
ドキュメントのオープンに失敗しました
LicenseException が拒否理由とともに — ライセンスファイルは見つかりましたが、拒否されました(無効な署名、改ざん、ブラックリスト、またはライセンスのバージョンウィンドウ外のビルド)。オープンは透かしではなくブロックされます。
LicenseException:
This document type requires the 'Dicom' plugin license.拡張子はプラグイン(ここでは DICOM)のみで処理されますが、その機能は付与されていません。
FormatNotSupportedException — ビューア(組み込み、プラグイン、またはカスタム)がこの拡張子をサポートしていません。DoconutOptions.RegisterViewer は独自フォーマット用に追加できます。
InvalidDataException — コンテンツが破損しているか、拡張子と一致しません(名前変更されたファイル)。オープン前にアップロードを検証してください。
InvalidOperationException:
No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().DocumentConverter は Converter プラグインを登録せずに解決されました。
出力が正しくありません
ページに透かしが付いています — ライセンスが見つからない、期限切れ、またはこのバージョンをカバーしていません。IIS の場合、ライセンスはサイトルート(AppContext.BaseDirectory\wwwroot)以下の wwwroot に配置する必要があり、bin\ ではありません。IDoconutLicenseService を確認してください(License.IsLicenseFileFound、IsExpired、IsVersionValid、License.RejectionMessage)。
レガシードキュメントが文字化けします — 起動時にコードページエンコーディングを一度だけ登録してください:
// Global.asax.cs, Application_Start - DoconutHost.Initialize の前。
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);フォントが間違っている、または置き換えられている — サーバーにドキュメントのフォントがありません。Office がインストールされていない Windows Server は開発マシンよりはるかに少ないフォントしか持ちません。フォントをインストールするか、FontFolders(WordConfig と PptConfig 上)をフォントが格納されたフォルダーに指すようにしてください。
画像アノテーションはビューアに表示されますが、エクスポート時に「Image blocked」ボックスが出ます — 画像のホストがプライベートまたはループバックアドレスで、サーバーが取得を拒否しています。アノテーション
評価版では機能したが、本番環境では無効
アクティブな Temporary ライセンスはすべての機能を付与します;購入したライセンスは購入したものだけを付与します。機能がない場合、Search や Annotation のファイルは出力されず、登録されたプラグインが起動時にサイトを停止させます。デプロイ前に IsCapabilityGranted(...) と使用するすべての機能を比較してください。
検索で何も見つからない(または少なすぎる)
- PDF の場合、ドキュメントを開いたときに
AllowSearchが有効になっていませんでした — デフォルトはfalseです。Word、Excel、PowerPoint も同様のスイッチを提供します。 - コンテンツがスキャンされた画像のみであるため、マッチングできるテキスト層がありません。
- HTML と Microsoft Project (MPP) はデフォルトでは検索できません:
DefaultRender = falseを設定して、テキスト付き PDF 投影でレンダリングさせます。 - 初期化後、
objViewer.CanSearch()はfalseです:解決されたフォーマットに検索パスがありません。これは Search ライセンスとは別ですので、両方を確認してください。 - ページは
objViewer.Search(...)の戻り値を読み取ります — カウントは第3引数のコールバックで返されます。
まだ詰まっていますか?
最小構成で問題を再現してください(クイックスタートから)。もしそこで再現した場合は、ドキュメント、あなたの Global.asax.cs、Web.config の Doconut 部分、そして Windows イベントログのエントリ(存在する場合)を添えてサポートに連絡してください。
このページは役に立ちましたか?