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(); // BEFORE UseDoconut()
app.UseDoconut();

AddDoconut

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

Membangun DoconutOptions, memvalidasinya secara cepat (lihat DoconutOptions → Validasi Startup), dan mendaftarkan seluruh grafik layanan:

ServiceLifetimeRole
DoconutOptionsSingletonObjek konfigurasi
IViewerFactorySingletonMemetakan ekstensi ke penampil format
IDocumentSessionManagerSingletonToken → cache sesi (IMemoryCache juga terdaftar)
IDoconutLicenseServiceSingletonLisensi dimuat sekali saat startup (prioritas: LicenseStreamLicenseContentLicensePath → pencarian otomatis)
PageImageServiceSingletonPipeline gambar halaman (watermark/rotate/scale/annotations)
Document security (access store)SingletonMemberikan hak untuk pengikatan token-ke-sesi
ViewerTransientFasada publik untuk membuka/menutup
DocumentConverterTransientFasada konversi — memerlukan plugin Converter
Health check "doconut"Melaporkan status lisensi/kedaluwarsa melalui pemeriksaan kesehatan ASP.NET
---------

Dua perilaku yang perlu diketahui:

  • Converter memerlukan pluginnya. Menyelesaikan DocumentConverter tanpa options.AddPlugin<ConverterPlugin>() akan melempar:
text
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().
  • Hak plugin divalidasi saat startup. Lisensi yang hilang, file TRIAL legacy, atau lisensi berbayar tanpa kemampuan plugin yang terdaftar akan gagal pada waktu AddDoconut(). 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:

csharp
app.MapHealthChecks("/health");

UseDoconut

text
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:

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

UseDoconutResources

text
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.

Ordering recap

csharp
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?