DoconutOptions

Konfigurasikan layanan Doconut

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

Ini merupakan perubahan lokasi sekaligus bentuk. Pada pustaka .NET Standard sebelumnya sebuah DoconutOptions instance dibangun pada waktu pipeline dan diberikan kepada UseDoconut(new DoconutOptions { … }). Di sini middleware tidak mengambil opsi apa pun — semuanya diatur selama pendaftaran layanan.

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 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 pada satu node (lihat Konsep Inti → Sesi & Keamanan). Sebelumnya dieja UnSafeMode.
stringMiddlewarePath"/doconut"Nilai koordinasi untuk endpoint page-image. 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 disematkan.
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, pengelola 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 disediakan. Implementasi saat ini tidak menggunakannya; restart aplikasi setelah mengganti lisensi.
DoconutPluginRegistryPluginRegistry—Registri hanya-baca yang mengumpulkan kontribusi plugin; dikonsumsi oleh pabrik penampil. Isi melalui AddPlugin<T>().

Prioritas lisensi (ditegakkan saat pendaftaran layanan): LicenseStream → LicenseContent → LicensePath → penemuan otomatis (lihat Memulai → Penyiapan Lisensi).

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 legacy TRIAL, atau lisensi berbayar yang tidak memberikan kemampuan plugin. Pendaftaran Temporary/Demo dipertahankan melewati kedaluwarsa dan menjadi subjek gerbang runtime (lihat Konsep Inti → Sistem Plugin).

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

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — titik depan opsional
    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, sebuah ImageConfig digunakan.

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

Validasi Startup

AddDoconut() memvalidasi opsi fail-fast, sehingga miskonfigurasi muncul sebagai pengecualian yang jelas pada startup alih-alih 404 yang membingungkan pada waktu 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: lisensi eksplisit, semua terkunci (semua default keamanan)
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});

// Jalur khusus (e.g. untuk menghindari konflik rute)
builder.Services.AddDoconut(options =>
{
    options.MiddlewarePath = "/docs-engine";
    options.ResourcesPath  = "/docs-assets";
});

Saat Anda mengubah ResourcesPath, jaga agar ResPath widget klien tetap sinkron (lihat ViewerConfig). Ini adalah salah satu dari dua pengaturan sisi klien yang gagal tanpa pesan kesalahan.

MiddlewarePath bukan pemetaan rute ASP.NET Core otomatis. Jika Doconut harus menjawab hanya di bawah awalan khusus, pasang UseDoconut() pada cabang itu (misalnya dengan app.Map("/docs-engine", branch => branch.UseDoconut())) dan atur BasePath klien ke URL yang sama. Aplikasi referensi justru mempertahankan bentuk permintaan historic DocImage.axd pada cabang MapWhen dengan BasePath: '/'.

Apakah halaman ini membantu?