DoconutOptions
تكوين خدمات Doconut
DoconutOptions (namespace Doconut) هو كائن التكوين الوحيد لكامل SDK. تقوم بتكوينه مرة واحدة، في الدالة الراجعة التي تمررها إلى DoconutHost.Initialize في Application_Start.
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
options.UnsafeMode = false;
options.ShowDoconutInfo = false;
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});الخصائص
| النوع | الخاصية | القيمة الافتراضية | الوصف |
|---|---|---|---|
bool | UnsafeMode | false | عند false، يقوم DocImage.axd بتقديم صفحة فقط لجلسة ASP.NET التي فتحت المستند (أو، في بيئة مزارع، للمتصفح الذي يحمل تذكرة موقعة). عند true، يتم تقديم أي طلب يحمل الرمز. اتركه false — راجع الجلسات والأمان. |
bool | ShowDoconutInfo | false | عند true، يرد طلب DocImage.axd بدون رمز بـ Doconut <version> is running on <host> بدلاً من 404. مفيد كفحص سريع؛ اترك false في بيئة الإنتاج. |
string | ResourcesPath | "/doconut-res" | بادئة URL التي يقدم من خلالها وحدة الموارد النصوص البرمجية المدمجة، الأنماط، والصور. |
string | LicensePath | "" | المسار الكامل لملف الترخيص. فارغ → مصدر الترخيص التالي، ثم الاكتشاف التلقائي؛ إذا لم يُعثر على شيء → نسخة تجريبية مائية بدون أي إمكانيات. |
string | LicenseContent | "" | محتوى الترخيص الخام (قاعدة بيانات، متغير بيئة، مخزن سري). له أولوية أعلى من LicensePath. |
Stream? | LicenseStream | null | الترخيص كتيار، يُقرأ مرة واحدة عند بدء التشغيل. له أولوية أعلى من كلا المصدرين الآخرين. |
string | MiddlewarePath | "/doconut" | غير مستخدم من قبل System.Web. نقطة النهاية للصفحة هي دائمًا المعالج DocImage.axd المُعلن في Web.config. لا يزال يتم التحقق من القيمة عند بدء التشغيل (انظر أدناه). |
bool | ResetLicense | false | غير مستخدم. يُقرأ الترخيص مرة واحدة، في DoconutHost.Initialize؛ أعد تدوير مجموعة التطبيقات بعد استبدال الترخيص. |
DoconutPluginRegistry | PluginRegistry | — | سجل للقراءة فقط لمساهمات الإضافات، يُملأ بواسطة AddPlugin<T>(). |
أولوية الترخيص: LicenseStream → LicenseContent → LicensePath → الاكتشاف التلقائي (انظر إعداد الترخيص).
الطرق
AddPlugin<TPlugin>()
DoconutOptions AddPlugin<TPlugin>() where TPlugin : IDoconutPlugin, new()يسجل إضافة (Converter، DICOM). طريقة سلسلة — تُعيد مثيل الخيارات. التعليقات والبحث هما ميزتان مدمجتان مرخصتان ولا تستخدمان ذلك.
إذا لم تمنح أي ترخيص نشط قدرة الإضافة، يطرح DoconutHost.Initialize استثناءً InvalidOperationException من Application_Start، ويستجيب الموقع لكل طلب بـ 500 فارغ حتى يتم إصلاح ذلك؛ الرسالة موجودة في سجل أحداث Windows (انظر نظام الإضافات).
إضافة…Widget()
DoconutOptions AddConverterWidget(Action<ConverterWidgetOptions>? configure = null)الويدجتات القابلة للإضافة تكون معطلة افتراضيًا. كل استدعاء Add…Widget() يُفعّل نقاط النهاية لتلك الويجت على DocImage.axd، ويتطلب تسجيل الإضافة المطابقة. وحدة الموارد تُقدم سكريبت الويجت سواءً تم تمكينه أم لا، لذا إذا كان الويجت يحمل ويُظهر لكنه يجيب بـ 404 في الإجراء الأول فهو يفتقد هذا الاستدعاء. وثّق ويدجت Converter في إضافة Converter.
RegisterViewer(extension, factory, defaultConfig?)
DoconutOptions RegisterViewer(
string extension, // ".myext" — النقطة الرائدة اختيارية
Func<IFormatViewer> factory,
Func<BaseConfig>? defaultConfig = null)يسجل عارضًا مخصصًا لامتداد ملف. العارضون المخصصون لهم أولوية أعلى من العارضين المدمجين وإضافات العارضين ولا يخضعون للترخيص. عندما يُحذف defaultConfig ويفتح مستند بدون تكوين صريح، يُستخدم ImageConfig.
يرمي ArgumentException (Extension must be a non-empty file extension.) لامتداد فارغ وArgumentNullException لمصنع فارغ.
التحقق من بدء التشغيل
DoconutHost.Initialize يتحقق من صحة الخيارات قبل بناء أي شيء:
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 فارغ في كل طلب، مع الرسالة في سجل أحداث Windows.
التكوينات الشائعة
// الإنتاج: ترخيص صريح، كل شيء آخر على الإعداد الافتراضي الآمن الخاص به.
public static void ProductionLicense() =>
Doconut.DoconutHost.Initialize(options =>
{
options.LicenseContent = Environment.GetEnvironmentVariable("DOCONUT_LICENSE") ?? "";
});
// مسار مورد مخصص (مثال: لتجنب تعارض مسار). احتفظ بـ ResPath الخاص بالعارض وأي MVC
// IgnoreRoute في خطوة معه: "/docs-assets" يعني 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.
هل كانت هذه الصفحة مفيدة؟