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.
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // SEBELUM UseDoconut()
app.UseDoconut();TambahDoconut
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:
| Layanan | Masa Hidup | Peran |
|---|---|---|
DoconutOptions | Singleton | Objek konfigurasi |
IViewerFactory | Singleton | Memetakan ekstensi ke penampil format |
IDocumentSessionManager | Singleton | Token → cache sesi (IMemoryCache juga terdaftar) |
IDoconutLicenseService | Singleton | Lisensi dimuat sekali saat startup (prioritas: LicenseStream → LicenseContent → LicensePath → pencarian otomatis) |
PageImageService | Singleton | Pipeline halaman‑gambar (watermark/rotate/scale/annotations) |
| Keamanan dokumen (penyimpanan akses) | Singleton | Izin untuk pengikatan token‑ke‑sesi |
Viewer | Transient | Fasada publik buka/tutup |
DocumentConverter | Transient | Fasada 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
DocumentConvertertanpaoptions.AddPlugin<ConverterPlugin>()menghasilkan:
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 waktuAddDoconut(). 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:
app.MapHealthChecks("/health");GunakanDoconut
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:
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());GunakanSumberDayaDoconut
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
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?