DoconutOptions

Konfigurasikan layanan Doconut

DoconutOptions (namespace Doconut) adalah objek konfigurasi tunggal untuk seluruh SDK. Anda mengkonfigurasinya sekali, di dalam AddDoconut(), dan ia didaftarkan sebagai singleton.

csharp
builder.Services.AddDoconut(options =>
{
    options.LicensePath     = "Doconut.Viewer.lic";
    options.UnsafeMode      = false;
    options.ShowDoconutInfo = false;
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

Properti

TipePropertiDefaultDeskripsi
boolShowDoconutInfofalseKetika true, permintaan middleware tanpa token mengembalikan banner versi (Doconut <version> is running on <host>) alih-alih 404. Berguna sebagai pemeriksaan cepat; biarkan false di produksi.
boolUnsafeModefalseKetika true, melewati pemeriksaan keamanan sesi ASP.NET pada permintaan halaman. Biarkan false di produksi (lihat Core Concepts → Sessions & Security).
stringMiddlewarePath"/doconut"Nilai koordinasi untuk endpoint halaman-gambar. Nilai ini divalidasi, tetapi tidak memasang cabang pipeline; pertahankan agar selaras dengan pemetaan UseDoconut() yang sebenarnya dan BasePath klien.
stringResourcesPath"/doconut-res"Awalan jalur URL untuk sumber daya JS/CSS/gambar/font yang tersemat.
stringLicensePath""Jalur ke file lisensi. Kosong → sumber lisensi berikutnya, lalu penemuan otomatis; tidak ada yang ditemukan → status evaluasi berwatermark tanpa kemampuan.
stringLicenseContent""Konten lisensi XML mentah (basis data, variabel lingkungan, manajer rahasia). Memiliki prioritas lebih tinggi daripada LicensePath.
Stream?LicenseStreamnullLisensi sebagai aliran, dibaca sekali saat startup. Memiliki prioritas lebih tinggi daripada kedua sumber lainnya.
boolResetLicensefalseBendera kompatibilitas yang disiapkan. Implementasi .NET 8 saat ini tidak menggunakannya; restart aplikasi setelah mengganti lisensi.
DoconutPluginRegistryPluginRegistryRegistri read-only yang mengumpulkan kontribusi plugin; digunakan oleh pabrik penampil. Isi melalui AddPlugin<T>().

Prioritas lisensi (ditegakkan saat pendaftaran layanan): LicenseStreamLicenseContentLicensePath → penemuan otomatis (lihat Getting Started → License Setup).

Metode

AddPlugin<TPlugin>()

text
DoconutOptions AddPlugin<TPlugin>() where TPlugin : IDoconutPlugin, new()

Gunakan metode ini untuk paket Converter dan DICOM opt-in yang dirilis. Anotasi dan Pencarian normal adalah fitur berlisensi bawaan dan tidak menggunakan AddPlugin<TPlugin>().

Mendaftarkan plugin pihak pertama (Converter, DICOM). Fluent — mengembalikan instance opsi. AddDoconut() melempar InvalidOperationException untuk lisensi yang hilang, file TRIAL warisan, atau lisensi berbayar yang tidak memberikan kemampuan plugin. Pendaftaran Temporary/Demo dipertahankan melewati masa kedaluwarsa dan menjadi tunduk pada gerbang runtime (lihat Core Concepts → Plugin System).

Widget Converter opt-in diaktifkan dengan AddConverterWidget() dan ditampilkan melalui properti read-only ConverterWidget; opsinya didokumentasikan pada halaman Plugin Converter (Plugins → Converter Plugin).

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — leading dot optional
    Func<IFormatViewer> factory,
    Func<BaseConfig>? defaultConfig = null)

Mendaftarkan penampil khusus untuk ekstensi file. Penampil khusus memiliki prioritas lebih tinggi daripada penampil bawaan dan plugin serta tidak dibatasi lisensi. Ketika defaultConfig dihilangkan dan dokumen dibuka tanpa konfigurasi eksplisit, ImageConfig digunakan.

Melempar ArgumentException (Extension must be a non-empty file extension.) untuk ekstensi kosong dan ArgumentNullException untuk factory null.

Validasi Startup

AddDoconut() memvalidasi opsi fail-fast, sehingga miskonfigurasi muncul sebagai pengecualian yang jelas saat startup alih-alih 404 yang membingungkan pada saat permintaan:

text
DoconutOptions.MiddlewarePath must be a non-empty path starting with '/'.
DoconutOptions.ResourcesPath must be a non-empty path starting with '/'.
DoconutOptions.MiddlewarePath and ResourcesPath must be different paths.

Konfigurasi Umum

csharp
// Production: explicit license, everything locked down (all security defaults)
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});

// Custom paths (e.g. to avoid a route conflict)
builder.Services.AddDoconut(options =>
{
    options.MiddlewarePath = "/docs-engine";
    options.ResourcesPath  = "/docs-assets";
});

Saat Anda mengubah ResourcesPath, pertahankan ResPath widget klien tetap sinkron (lihat ViewerConfig).

MiddlewarePath bukan pemetaan rute otomatis ASP.NET Core. Jika Doconut harus menjawab hanya di bawah awalan khusus, pasang UseDoconut() pada cabang tersebut (misalnya dengan app.Map("/docs-engine", branch => branch.UseDoconut())) dan atur BasePath klien ke URL yang sama.

Apakah halaman ini membantu?