DoconutOptions
הגדרת שירותי Doconut
DoconutOptions (namespace Doconut) הוא האובייקט הקונפיגורציה היחיד לכל ה‑SDK. אתה מגדיר אותו פעם אחת, בקריאה חזרה (callback) שאתה מעביר ל‑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). Fluent — מחזיר את מופע האפשרויות. Annotation ו‑Search הם תכונות מורשות מובנות ואינן משתמשות בו.
אם אין רישיון פעיל שמעניק לתוסף את היכולת, DoconutHost.Initialize זורק InvalidOperationException מ‑Application_Start, והאתר משיב לכל בקשה עם 500 ריק עד לתיקון; ההודעה נמצאת ביומן האירועים של Windows (ראה מערכת תוספים).
Add…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 עבור מפעל (factory) ריק.
אימות אתחול
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.
תצורות נפוצות
// Production: רישיון מפורש, כל השאר בברירת המחדל המאובטחת שלו.
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.
האם דף זה היה מועיל?