DoconutOptions

Konfigurasikan layanan Doconut

DoconutOptions (namespace Doconut) adalah objek konfigurasi tunggal untuk seluruh SDK. Anda mengkonfigurasinya sekali, dalam callback yang Anda berikan ke DoconutHost.Initialize di Application_Start.

csharp
Doconut.DoconutHost.Initialize(options =>
{
    options.LicensePath     = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
    options.UnsafeMode      = false;
    options.ShowDoconutInfo = false;
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

Properti

TipePropertiDefaultDeskripsi
boolUnsafeModefalseKetika false, DocImage.axd menyajikan halaman hanya untuk sesi ASP.NET yang membuka dokumen (atau, dalam farm, ke browser dengan tiket yang ditandatangani). Ketika true, setiap permintaan yang membawa token akan dilayani. Biarkan false — lihat Sesi & Keamanan.
boolShowDoconutInfofalseKetika true, permintaan DocImage.axd tanpa token menjawab Doconut <version> is running on <host> alih-alih 404. Berguna sebagai pemeriksaan cepat; biarkan false dalam produksi.
stringResourcesPath"/doconut-res"Awalan URL tempat modul sumber daya menyajikan skrip, gaya, dan gambar yang tersemat.
stringLicensePath""Jalur lengkap ke file lisensi. Kosong → sumber lisensi berikutnya, kemudian penemuan otomatis; tidak ada yang ditemukan → evaluasi berwatermark tanpa kemampuan.
stringLicenseContent""Konten lisensi mentah (database, variabel lingkungan, penyimpanan rahasia). Memiliki prioritas lebih tinggi daripada LicensePath.
Stream?LicenseStreamnullLisensi sebagai aliran, dibaca sekali saat startup. Memiliki prioritas lebih tinggi daripada kedua sumber lainnya.
stringMiddlewarePath"/doconut"Tidak digunakan oleh System.Web. Titik akhir halaman selalu handler DocImage.axd yang dideklarasikan di Web.config. Nilai ini tetap divalidasi saat startup (lihat di bawah).
boolResetLicensefalseTidak digunakan. Lisensi dibaca sekali, di DoconutHost.Initialize; daur ulang application pool setelah mengganti lisensi.
DoconutPluginRegistryPluginRegistry—Registri hanya-baca dari kontribusi plugin, diisi oleh AddPlugin<T>().

Prioritas lisensi: LicenseStream → LicenseContent → LicensePath → penemuan otomatis (lihat Pengaturan Lisensi).

Metode

AddPlugin<TPlugin>()

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

Mendaftarkan sebuah plugin (Converter, DICOM). Fluent — mengembalikan instance opsi. Annotation dan Search adalah fitur berlisensi bawaan dan tidak menggunakan ini.

Jika tidak ada lisensi aktif yang memberikan kemampuan plugin, DoconutHost.Initialize melempar InvalidOperationException dari Application_Start, dan situs menjawab setiap permintaan dengan 500 kosong sampai diperbaiki; pesan berada di log peristiwa Windows (lihat Sistem Plugin).

Add…Widget()

text
DoconutOptions AddConverterWidget(Action<ConverterWidgetOptions>? configure = null)

Widget drop-in dinonaktifkan secara default. Setiap pemanggilan Add…Widget() mengaktifkan endpoint widget tersebut pada DocImage.axd, dan memerlukan plugin yang cocok terdaftar. Modul sumber daya menyajikan skrip widget terlepas dari Anda mengaktifkannya atau tidak, sehingga widget yang memuat dan menggambar tetapi menjawab 404 pada aksi pertama kehilangan pemanggilan ini. Widget Converter didokumentasikan di Plugin Converter.

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 terikat lisensi. Ketika defaultConfig dihilangkan dan dokumen dibuka tanpa konfigurasi eksplisit, ImageConfig akan digunakan.

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

Validasi Startup

DoconutHost.Initialize memvalidasi opsi sebelum membangun apa pun:

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.

MiddlewarePath diperiksa meskipun System.Web tidak pernah menggunakannya, jadi biarkan pada nilai defaultnya. Seperti setiap pengecualian yang dilempar dari Application_Start, kegagalan validasi muncul sebagai 500 kosong pada setiap permintaan, dengan pesan di log peristiwa Windows.

Konfigurasi Umum

csharp
// Production: explicit license, everything else at its secure default.
public static void ProductionLicense() =>
    Doconut.DoconutHost.Initialize(options =>
    {
        options.LicenseContent = Environment.GetEnvironmentVariable("DOCONUT_LICENSE") ?? "";
    });

// Custom resource path (e.g. to avoid a route conflict). Keep the viewer's ResPath and any MVC
// IgnoreRoute in step with it: "/docs-assets" means ResPath: 'docs-assets/images'.
public static void CustomResourcePath() =>
    Doconut.DoconutHost.Initialize(options =>
    {
        options.ResourcesPath = "/docs-assets";
    });

Saat Anda mengubah ResourcesPath, ubah tiga hal secara bersamaan: opsi, ResPath widget ('docs-assets/images' untuk "/docs-assets"), dan, di MVC, IgnoreRoute untuk jalur sumber daya (routes.IgnoreRoute("docs-assets/{*pathInfo}")). Endpoint DocImage.axd tidak berpindah: jalurnya ditetapkan oleh atribut path handler di Web.config.

Apakah halaman ini membantu?