DoconutExtensions

Pendaftaran layanan dan middleware

DoconutExtensions (namespace Doconut.Middleware) adalah kelas statis dengan tiga pemanggilan yang dilakukan setiap host Doconut: satu pendaftaran layanan dan dua pendaftaran middleware.

csharp
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // SEBELUM UseDoconut()
app.UseDoconut();

TambahDoconut

text
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)

Membangun DoconutOptions, memvalidasi mereka secara fail‑fast (lihat DoconutOptions → Validasi Startup), dan mendaftarkan grafik layanan lengkap:

LayananMasa HidupPeran
DoconutOptionsSingletonObjek konfigurasi
IViewerFactorySingletonMemetakan ekstensi ke penampil format
IDocumentSessionManagerSingletonToken → cache sesi (IMemoryCache juga terdaftar)
IDoconutLicenseServiceSingletonLisensi dimuat sekali saat startup (prioritas: LicenseStream → LicenseContent → LicensePath → pencarian otomatis)
PageImageServiceSingletonPipeline halaman‑gambar (watermark/rotate/scale/annotations)
Keamanan dokumen (penyimpanan akses)SingletonIzin untuk pengikatan token‑ke‑sesi
ViewerTransientFasada publik buka/tutup
DocumentConverterTransientFasada konversi — memerlukan plugin Converter
Pemeriksaan kesehatan "doconut"—Melaporkan status lisensi/kedaluwarsa melalui pemeriksaan kesehatan ASP.NET

Dua perilaku yang penting diketahui:

  • Converter memerlukan plugin‑nya. Menyelesaikan DocumentConverter tanpa options.AddPlugin<ConverterPlugin>() menghasilkan:
text
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().
  • Entitlement plugin divalidasi saat startup. Lisensi yang hilang, file legacy TRIAL, atau lisensi berbayar tanpa kemampuan plugin yang terdaftar gagal pada waktu AddDoconut(). Pendaftaran Temporary/Demo bertahan melewati tanggal kedaluwarsa mereka, sementara gerbang runtime mencabut kemampuan yang telah kedaluwarsa.

Pemeriksaan kesehatan terintegrasi dengan mekanisme standar ASP.NET Core — petakan jika Anda menginginkan status lisensi pada endpoint kesehatan Anda:

csharp
app.MapHealthChecks("/health");

GunakanDoconut

text
IApplicationBuilder UseDoconut(this IApplicationBuilder app)

Menambahkan middleware halaman‑gambar Doconut. Ini menjawab setiap permintaan yang membawa parameter kueri ?token= — halaman, thumbnail, pencarian, anotasi, aksi halaman (tabel permintaan lengkap ada di Core Concepts → How the Viewer Works). Ketika UnsafeMode adalah false, lapisan keamanan dokumen secara otomatis terhubung sebelum itu.

Contoh referensi mengarahkan permintaan widget melalui cabang jalur:

csharp
app.MapWhen(
    ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
    branch => branch.UseDoconut());

GunakanSumberDayaDoconut

text
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)

Menyajikan JS, CSS, gambar, dan font yang tersemat di DoconutOptions.ResourcesPath (default /doconut-res). Ini adalah file yang Viewer.ReferenceCss() / ReferenceScripts() menghasilkan tag untuknya.

Selalu panggil sebelum UseDoconut(). Jika area penampil tetap kosong dan konsol browser menunjukkan 404 untuk /doconut-res/..., pemanggilan ini hilang atau berada di tempat yang salah.

Ringkasan Urutan

csharp
app.UseRouting();
app.UseSession();          // dibutuhkan ketika UnsafeMode = false
app.UseDoconutResources(); // panggilan Doconut pertama
app.UseDoconut();          // panggilan Doconut kedua (atau melalui cabang MapWhen)

Apakah halaman ini membantu?