DoconutExtensions
Registrasi 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(); // BEFORE UseDoconut()
app.UseDoconut();Menambahkan Doconut
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)Membangun DoconutOptions, memvalidasinya secara cepat (lihat DoconutOptions → Validasi Startup), dan mendaftarkan seluruh grafik layanan:
| Layanan | Masa Hidup | Peran |
|---|---|---|
DoconutOptions | Singleton | Objek konfigurasi |
IViewerFactory | Singleton | Memetakan ekstensi ke penampil format |
IDocumentSessionManager | Singleton | Token → cache sesi (IMemoryCache juga didaftarkan) |
IDoconutLicenseService | Singleton | Lisensi dimuat sekali saat startup (prioritas: LicenseStream → LicenseContent → LicensePath → pencarian otomatis) |
PageImageService | Singleton | Pipeline gambar halaman (watermark/rotate/scale/annotations) |
| Keamanan dokumen (penyimpanan akses) | Singleton | Hak untuk pengikatan token-ke-sesi |
Viewer | Transient | Fasada publik untuk membuka/menutup |
DocumentConverter | Transient | Fasada konversi — memerlukan plugin Converter |
Health check "doconut" | — | Melaporkan status lisensi/kedaluwarsa melalui pemeriksaan kesehatan ASP.NET |
Dua perilaku yang perlu diketahui:
- Converter memerlukan plugin-nya. Menyelesaikan
DocumentConvertertanpaoptions.AddPlugin<ConverterPlugin>()akan melempar:
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().- Hak plugin divalidasi saat startup. Lisensi yang hilang, file
TRIALlama, atau lisensi berbayar tanpa kemampuan plugin yang terdaftar akan gagal pada saatAddDoconut(). Pendaftaran Temporary/Demo bertahan melewati tanggal kedaluwarsa, 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");Menggunakan Doconut
IApplicationBuilder UseDoconut(this IApplicationBuilder app)Menambahkan middleware gambar halaman Doconut. Middleware 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 bernilai false, lapisan keamanan dokumen secara otomatis dihubungkan sebelum middleware ini.
Contoh referensi mengarahkan permintaan widget melalui cabang jalur:
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());Menggunakan Sumber Daya Doconut
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)Menyajikan JS, CSS, gambar, dan font yang tersemat di DoconutOptions.ResourcesPath (default /doconut-res). Ini adalah berkas-berkas yang dihasilkan oleh Viewer.ReferenceCss() / ReferenceScripts() dalam bentuk tag.
Selalu panggil sebelum UseDoconut(). Jika area penampil tetap kosong dan konsol browser menampilkan 404 untuk /doconut-res/..., pemanggilan ini hilang atau berada di tempat yang salah.
Ringkasan Urutan
app.UseRouting();
app.UseSession(); // required when UnsafeMode = false
app.UseDoconutResources(); // 1st Doconut call
app.UseDoconut(); // 2nd Doconut call (or via a MapWhen branch)Apakah halaman ini membantu?