インストール
Doconut を .NET Framework 4.7.2 の Web アプリケーションに追加する
Doconut.NETFramework は .NET Framework 4.7.2 上のクラシック ASP.NET アプリケーションで Doconut ビューアをホストします — IIS または IIS Express、MVC 5 または Web Forms。セットアップは 3 つのパートから成ります:NuGet パッケージ、Web.config への 2 つの登録、そして Global.asax での 1 回の呼び出し。このページではすべてをカバーします;クイックスタート でページにドキュメントを配置します。
必要条件
- Web プロジェクトは .NET Framework 4.7.2 以降を対象とします。4.7 プロジェクトはこのパッケージを使用できないため、まずターゲットを変更してください。
- サイトは 統合パイプライン で実行されます(IIS および IIS Express のアプリケーションプールのデフォルト)。
このページは Doconut.NETFramework 26.9.0 以降 を対象としています。バージョン 26.8.0 以前は .NET Framework 4.7 を対象とし、異なる API を使用していましたが、そのラインは廃止されました。その境界を越えて既存アプリケーションを更新する方法は 移行 に記載されています。
パッケージのインストール
パッケージ マネージャ コンソールから:
Install-Package Doconut.NETFrameworkまたは、SDK スタイルのプロジェクトの場合:
dotnet add package Doconut.NETFrameworkレンダリング エンジンはパッケージに埋め込まれているため、別個のエンジン アセンブリを参照・コピー・デプロイする必要はありません。オプション機能はそれぞれ独自のパッケージとして提供されます(例:Doconut.NETFramework.Converter と Doconut.NETFramework.Dicom)。これらの機能を使用するには、対応するライセンスが必要です(プラグインシステム を参照)。
Web.config の構成
Doconut は 2 種類のリクエストを処理し、IIS は両方とも Web.config を通してルーティングします:
DocImage.axd— ビューアのページ、サムネイル、検索、注釈エンドポイントで、Doconut.DocImageHandlerが提供します。/doconut-res/*— ビューア自身のスクリプト、スタイルシート、アイコンで、アセンブリに埋め込まれ、Doconut.DoconutResourceModuleが提供します。
以下を追加し、依存する設定も合わせて記述します:
<configuration>
<system.web>
<!-- MVC 5 only: Razor compiles views at run time and needs the netstandard facade. -->
<compilation targetFramework="4.7.2">
<assemblies>
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" />
</assemblies>
</compilation>
<!-- maxRequestLength is in KILOBYTES: 200 MB. -->
<httpRuntime targetFramework="4.7.2" maxRequestLength="204800" />
<!-- Read .cshtml and .aspx files as UTF-8, not as the server's ANSI code page. -->
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- maxAllowedContentLength is in BYTES: the same 200 MB. -->
<requestLimits maxAllowedContentLength="209715200" />
</requestFiltering>
</security>
<modules runAllManagedModulesForAllRequests="true">
<add name="DoconutResourceModule" type="Doconut.DoconutResourceModule, Doconut" />
</modules>
<handlers>
<add name="DocImage" verb="GET,HEAD,POST" path="DocImage.axd"
type="Doconut.DocImageHandler, Doconut" />
</handlers>
</system.webServer>
</configuration>各行は例外を発生させない失敗を防止します:
verb="GET,HEAD,POST"—HEADを保持します。ビューアはアニメーション画像を検出するためにページ 1 に対してHEADリクエストを送ります。verbが無いと、ハンドラが実行される前に IIS が404を返し、ドキュメントは表示されますがアニメーション検出が機能せず、ブラウザコンソールに 404 が大量に出ます。runAllManagedModulesForAllRequests="true"—/doconut-res/*.js、.css、.pngは静的ファイルのように見えるため、IIS はリソースモジュールが処理する前に静的ファイルハンドラに渡してしまいます。その結果、スクリプトやアイコンのないビューアになります。<globalization fileEncoding="utf-8">— BOM なしで UTF-8 として保存されたページファイルは、サーバーの ANSI コードページで読み込まれ、非 ASCII 文字が二重エンコードされてブラウザに届きます(例:エムダッシュが—と表示)。ファイル自体はディスク上で正しく、ページは依然として<meta charset="utf-8">を宣言しています。netstandardアセンブリ(MVC 5) — Razor はビューを最初に要求されたときにコンパイルし、独自の参照リストにこのファサードが含まれません。単純なメンバーアクセス以外の動的処理を行うビューはCS0012エラーで失敗し、空の500を返します。このエラーは Windows のイベントログ(ソース ASP.NET)にのみ表示されます。Web Forms アプリケーションではこの行は不要です。- アップロード制限 — ASP.NET はハンドラが実行される前にリクエスト本体全体を読み取るため、これらの制限を超えるアップロードは IIS によって独自のエラーページで拒否されます。
maxRequestLength(キロバイト)とmaxAllowedContentLength(バイト)を同等に保ち、ユーザーが開くまたはアップロードする最大ファイルサイズを上回るように設定してください。
さらに 2 つの設定が重要で、通常はすでに正しく設定されています:
- セッション状態は有効のまま。デフォルトでは、ページはドキュメントを開いた ASP.NET セッションにのみ提供されるため、サイトは
<sessionState mode="Off" />を設定してはいけません。セッションとセキュリティ を参照してください。 - バインディング リダイレクト。NuGet が
Web.configに書き込む<runtime>のバインディング リダイレクトを保持してください。SDK スタイルのプロジェクトでは、生成されたbin\<YourApp>.dll.configからコピーします。古典的な ASP.NET はWeb.configからのみリダイレクトを読み取ります。bin\に存在しないバージョンを指すリダイレクトがあると、起動時に空の500エラーでアプリケーション全体が停止します。
Register Doconut in Global.asax
System.Web にはビルダーもミドルウェア パイプラインもありません。Doconut は Application_Start の DoconutHost.Initialize によってワーカープロセスごとに一度だけ構成され、Application_End の DoconutHost.Shutdown で解放されます。
// Global.asax.cs
protected void Application_Start()
{
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
});
}
protected void Application_End()
{
Doconut.DoconutHost.Shutdown();
}DoconutHost.Initialize はハンドラ、リソース モジュール、そして独自コードが使用するサービスを構築します。コードは DoconutHost.Services を通してそれらにアクセスします(DoconutHost を参照)。最初の呼び出しだけが設定を行い、2 回目以降は無視されます。MVC アプリケーションの場合は、2 つの Doconut パスをルーティングから除外してください — Quick Start では完全な Application_Start が示されています。
All options
DoconutOptions は以下の設定可能なプロパティを受け取ります。すべて任意です。
| プロパティ | デフォルト | 説明 |
|---|---|---|
UnsafeMode | false | false の場合、DocImage.axd はドキュメントを開いた ASP.NET セッションにのみページを返します。true にすると、トークンを含むすべてのリクエストに対してページが返されます。false のままにしてください。 |
ShowDoconutInfo | false | true にすると、token が無い DocImage.axd リクエストに対して 404 ではなくバージョン バナーが返ります。スモークチェックに便利ですが、本番環境ではオフにしてください。 |
ResourcesPath | "/doconut-res" | リソース モジュールが埋め込みスクリプト、スタイル、アイコンを提供するパスです。ビューアの ResPath と MVC の IgnoreRoute と合わせて変更してください。 |
LicensePath | "" | ライセンス ファイルへのフルパス。空文字列の場合は次のソースへフォールスルーし、最終的に自動検出へ移ります。 |
LicenseContent | "" | 生のライセンス コンテンツ — 環境変数、シークレット ストア、またはデータベースから取得します。 |
LicenseStream | null | 起動時に一度だけ読み取られるストリーム形式のライセンス。 |
MiddlewarePath | "/doconut" | このパッケージでは使用されません。ページ エンドポイントは Web.config に宣言された DocImage.axd ハンドラで、設定値に関係なく機能します。なお、/ で始まり ResourcesPath と異なる必要があります。 |
ResetLicense | false | このパッケージでは使用されません。ライセンスは DoconutHost.Initialize 時に一度だけ読み取られます。ライセンス ファイルを置き換えた場合はアプリケーション プールをリサイクルしてください。 |
複数のライセンス ソースが設定されている場合、LicenseStream が LicenseContent を上書きし、LicenseContent が LicensePath を上書きし、最後に自動検出が適用されます — 詳細は License Setup を参照してください。
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
options.ResourcesPath = "/doconut-res"; // where the viewer's JS/CSS/images are served from
options.UnsafeMode = false; // keep session security on
options.ShowDoconutInfo = false;
});
// The page endpoint is not an option here: it is the DocImage.axd handler declared in Web.config.Next steps
- Quick Start — ドキュメントを開き、MVC 5 または Web Forms でブラウザにレンダリングします。
- License Setup — Doconut がライセンス ファイルを探す場所を確認します。
このページは役に立ちましたか?