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:

LayananUmurPeran
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)SingletonHak akses untuk pengikatan token-ke-sesi
ViewerTransientFasada publik buka/tutup
DocumentConverterTransientFasada konversi — memerlukan plugin Converter
DistributedDocumentPublisherMenerbitkan artefak dokumen ke penyimpanan bersama
Health check "doconut"Melaporkan status lisensi/kedaluwarsa melalui pemeriksaan kesehatan ASP.NET

Tidak ada pemanggilan yang setara di pustaka .NET Standard sebelumnya. Ia membangun new Viewer(cache, accessor) per permintaan dan meneruskan opsi ke middleware; keduanya digantikan oleh pendaftaran tunggal ini.

Dua perilaku yang penting untuk diketahui:

  • Converter memerlukan plugin-nya. 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 lama, 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. Ia 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 terhubung sebelum middleware ini.

Tidak menerima argumen apa pun. Mengirimkan instance DoconutOptions di sini adalah bentuk pustaka sebelumnya dan kini tidak lagi dapat dikompilasi.

Contoh referensi mengarahkan permintaan widget melalui cabang jalur, mempertahankan bentuk permintaan historis:

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 tag oleh Viewer.ReferenceCss() / ReferenceScripts().

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

Ini adalah pengganti yang didukung untuk menghubungkan middleware sumber daya tersemat secara manual dengan app.UseMiddleware<EmbeddedResourceMiddleware>().

Serving from shared storage

Dua pendaftaran tambahan ada untuk penyebaran di mana node yang merender dokumen tidak selalu menjadi node yang menyajikan halamannya. Keduanya dibahas secara menyeluruh dalam Distributed Deployments; tanda tangannya adalah:

text
IServiceCollection AddDoconutDistributedAsyncPublish(...)   // opt-in background publish queue
IServiceCollection AddDoconutDistributedWidgets(...)        // shared backing store for widget uploads

Sisi pembacaan adalah middleware terpisah dari paket Doconut.Clouds:

text
IApplicationBuilder UseDoconutCloud<THandler>(
    this IApplicationBuilder app,
    Action<CloudOptions>? configure = null,
    string pathPrefix = "/doconut-cloud")
    where THandler : BaseCloudHandler

UseDoconutWebFarm(...) dan WebFarmOptions tidak ada dalam rilis ini. Lihat panduan migrasi untuk pemetaan pengaturan demi pengaturan.

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?