DoconutExtensions
רישום שירותים וביניים
DoconutExtensions (namespace Doconut.Middleware) היא המחלקה הסטטית עם שלוש הקריאות שכל מארח Doconut מבצע: רישום שירות אחד ושתי רישומי middleware.
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // BEFORE UseDoconut()
app.UseDoconut();AddDoconut – הוספת Doconut
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)בונה את DoconutOptions, מאמת אותם באופן מיידי (ראו DoconutOptions → אימות בזמן אתחול), ומרשום את גרף השירות המלא:
| שירות | משך חיים | תפקיד |
|---|---|---|
DoconutOptions | Singleton | אובייקט הקונפיגורציה |
IViewerFactory | Singleton | ממפה הרחבות לצופני פורמט |
IDocumentSessionManager | Singleton | Token → מטמון סשן (IMemoryCache נרשם גם הוא) |
IDoconutLicenseService | Singleton | רישיון נטען פעם אחת באתחול (עדיפות: LicenseStream → LicenseContent → LicensePath → חיפוש אוטומטי) |
PageImageService | Singleton | צינור עיבוד תמונות דף (סימן מים/סיבוב/קנה מידה/הערות) |
| Document security (access store) | Singleton | הענקת גישה לקישור token‑ל‑session |
Viewer | Transient | הממשק הציבורי לפתיחה/סגירה |
DocumentConverter | Transient | ממשק המרה — דורש את תוסף Converter |
Health check "doconut" | — | מדווח על מצב רישיון/תוקף דרך בדיקות בריאות של ASP.NET |
שתי ההתנהגויות שכדאי לדעת:
- ה-Converter דורש את התוסף שלו. ניסיון לקבל
DocumentConverterללאoptions.AddPlugin<ConverterPlugin>()גורר שגיאה:
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().- זכאות לתוסף מאומתת באתחול. רישיון חסר, קובץ
TRIALמיושן, או רישיון בתשלום ללא יכולת של תוסף רשום נכשל בזמן קריאתAddDoconut(). רישומים זמניים/דמו נשארים פעילים אחרי תאריך התפוגה, בעוד שערי זמן ריצה מבטלים את היכולות שפג תוקפן.
בדיקת הבריאות משולבת במנגנון ה‑ASP.NET Core הסטנדרטי — מיפוי אם ברצונכם לקבל את מצב הרישיון בנקודת הבריאות שלכם:
app.MapHealthChecks("/health");UseDoconut – שימוש ב‑Doconut
IApplicationBuilder UseDoconut(this IApplicationBuilder app)מוסיף את middleware של תמונות דף של Doconut. הוא משיב לכל בקשה שנושאת פרמטר שאילתה ?token= — דפים, תמונות ממוזערות, חיפוש, הערות, פעולות דף (טבלת הבקשות המלאה נמצאת ב‑Core Concepts → How the Viewer Works). כאשר UnsafeMode הוא false, שכבת האבטחה של המסמך מחוברת אוטומטית לפני זה.
דוגמת ההפניה ממפה את הבקשות של ה‑widget דרך ענף נתיב:
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());UseDoconutResources – שימוש במשאבי Doconut
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)משרת את קבצי ה‑JS, CSS, תמונות וגופנים המוטמעים ב‑DoconutOptions.ResourcesPath (ברירת מחדל /doconut-res). אלו הקבצים ש‑Viewer.ReferenceCss() / ReferenceScripts() מייצרים תגיות עבורם.
תמיד יש לקרוא לזה לפני UseDoconut(). אם אזור הצופה נשאר ריק וקונסול הדפדפן מציג 404 עבור /doconut-res/..., קריאה זו חסרה או ממוקמת במקום הלא נכון.
סיכום סדר הפעולות
app.UseRouting();
app.UseSession(); // required when UnsafeMode = false
app.UseDoconutResources(); // 1st Doconut call
app.UseDoconut(); // 2nd Doconut call (or via a MapWhen branch)האם דף זה היה מועיל?