گزینه‌های Doconut

پیکربندی سرویس‌های Doconut

DoconutOptions (namespace Doconut) یک شیء پیکربندی تک برای کل SDK است. شما آن را یک‌بار در کال‌بکی که به DoconutHost.Initialize در 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>();
});

ویژگی‌ها

TypePropertyDefaultDescription
boolUnsafeModefalseوقتی false باشد، DocImage.axd فقط برای نشست ASP.NET که سند را باز کرده (یا در یک فارم، برای مرورگری که بلیت امضا شده دارد) صفحه‌ای سرو می‌کند. وقتی true باشد، هر درخواست حاوی توکن سرو می‌شود. آن را false بگذارید — به Sessions & Security مراجعه کنید.
boolShowDoconutInfofalseوقتی true باشد، درخواست DocImage.axd بدون توکن پاسخ می‌دهد Doconut <version> is running on <host> به جای 404. برای بررسی سریع مفید است؛ در محیط تولید false بگذارید.
stringResourcesPath"/doconut-res"پیشوند URL که ماژول منابع اسکریپت‌ها، استایل‌ها و تصاویر جاسازی‌شده را سرو می‌کند.
stringLicensePath""مسیر کامل فایل لایسنس. خالی → منبع لایسنس بعدی، سپس کشف خودکار؛ اگر چیزی پیدا نشود → ارزیابی با واترمارک بدون قابلیت.
stringLicenseContent""محتوای خام لایسنس (پایگاه داده، متغیر محیطی، مخزن مخفی). بر LicensePath اولویت دارد.
Stream?LicenseStreamnullلایسنس به‌صورت جریان، یک‌بار در زمان راه‌اندازی خوانده می‌شود. بر هر دو منبع دیگر اولویت دارد.
stringMiddlewarePath"/doconut"در System.Web استفاده نمی‌شود. نقطه انتهایی صفحه همیشه هندلر DocImage.axd است که در Web.config اعلام شده. مقدار هنوز در زمان راه‌اندازی اعتبارسنجی می‌شود (به زیر نگاه کنید).
boolResetLicensefalseاستفاده نمی‌شود. لایسنس یک‌بار در DoconutHost.Initialize خوانده می‌شود؛ پس از تعویض لایسنس، استخر برنامه را ری‌سایکل کنید.
DoconutPluginRegistryPluginRegistry—رجیستری فقط‑خواندنی از مشارکت‌های افزونه، که توسط AddPlugin<T>() پر می‌شود.

اولویت لایسنس: LicenseStream → LicenseContent → LicensePath → کشف خودکار (به License Setup مراجعه کنید).

متدها

AddPlugin<TPlugin>()

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

یک افزونه (مبدل، DICOM) را ثبت می‌کند. به‌صورت fluent — نمونهٔ گزینه‌ها را برمی‌گرداند. Annotation و Search ویژگی‌های لایسنس‌دار داخلی هستند و از این متد استفاده نمی‌کنند.

اگر لایسنس فعال قابلیت افزونه را ندهد، DoconutHost.Initialize یک InvalidOperationException از Application_Start پرتاب می‌کند و سایت هر درخواست را با یک 500 خالی پاسخ می‌دهد تا مشکل رفع شود؛ پیام در لاگ رویداد ویندوز ثبت می‌شود (به Plugin System نگاه کنید).

Add…Widget()

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

ویجت‌های آماده به‌صورت پیش‌فرض غیرفعال هستند. هر فراخوانی Add…Widget() انتهای مربوط به آن ویجت را در DocImage.axd فعال می‌کند و نیاز به ثبت افزونهٔ متناظر دارد. ماژول منابع اسکریپت ویجت را صرف‌نظر از فعال بودن سرو می‌کند، بنابراین ویجتی که بارگذاری و رسم می‌شود اما در اولین عملش 404 می‌دهد، این فراخوانی را از دست داده است. ویجت مبدل در Converter Plugin مستند شده است.

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — نقطهٔ پیشوند اختیاری
    Func<IFormatViewer> factory,
    Func<BaseConfig>? defaultConfig = null)

یک نمایشگر سفارشی برای پسوند فایل ثبت می‌کند. نمایشگرهای سفارشی بر نمایشگرهای داخلی و افزونه‌ها اولویت دارند و تحت لایسنس نیستند. وقتی defaultConfig حذف شود و سندی بدون پیکربندی صریح باز شود، یک ImageConfig استفاده می‌شود.

برای پسوند خالی ArgumentException (Extension must be a non-empty file extension.) و برای کارخانهٔ null ArgumentNullException پرتاب می‌شود.

اعتبارسنجی هنگام راه‌اندازی

DoconutHost.Initialize قبل از ساختن هر چیزی گزینه‌ها را اعتبارسنجی می‌کند:

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 حتی اگر System.Web از آن استفاده نکند، بررسی می‌شود، پس آن را به مقدار پیش‌فرض بگذارید. همانند هر استثنای پرتاب‌شده از Application_Start، یک شکست اعتبارسنجی به‌صورت 500 خالی در هر درخواست ظاهر می‌شود و پیام در لاگ رویداد ویندوز ثبت می‌شود.

پیکربندی‌های رایج

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";
    });

وقتی ResourcesPath را تغییر می‌دهید، سه مورد را همزمان به‌روز کنید: گزینه، ResPath ویجت ('docs-assets/images' برای "/docs-assets")، و در MVC، IgnoreRoute برای مسیر منبع (routes.IgnoreRoute("docs-assets/{*pathInfo}")). نقطهٔ انتهایی DocImage.axd جابه‌جا نمی‌شود: مسیر آن توسط ویژگی path هندلر در Web.config تعیین می‌شود.

آیا این صفحه مفید بود؟