DoconutExtensions
רישום שירות ו‑middleware
DoconutExtensions (namespace Doconut.Middleware) היא המחלקה הסטטית עם שלוש הקריאות שכל מארח Doconut מבצע: רישום שירות אחד ושתי רישומי middleware.
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // BEFORE UseDoconut()
app.UseDoconut();AddDoconut – הוספה
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)בונה את DoconutOptions, מאמת אותם באופן מהיר (ראו DoconutOptions → Startup validation), ורושם את גרף השירותים המלא:
| שירות | אורך חיים | תפקיד |
|---|---|---|
DoconutOptions | יחיד | אובייקט התצורה |
IViewerFactory | יחיד | ממפה הרחבות לצופים בפורמט |
IDocumentSessionManager | יחיד | Token → מטמון סשן (IMemoryCache גם נרשם) |
IDoconutLicenseService | יחיד | רישיון נטען פעם אחת באתחול (עדיפות: LicenseStream → LicenseContent → LicensePath → חיפוש אוטומטי) |
PageImageService | יחיד | צינור תמונת עמוד (סימן מים/סיבוב/קנה מידה/הערות) |
| Document security (access store) | יחיד | הענקות לקישור token-ל-session |
Viewer | מעבר | הממשק הפומבי לפתיחה/סגירה |
DocumentConverter | מעבר | ממשק המרה — דורש את תוסף Converter |
בדיקת בריאות "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 – שימוש
IApplicationBuilder UseDoconut(this IApplicationBuilder app)מוסיף את middleware של תמונת העמוד של Doconut. הוא משיב לכל בקשה שנושאת פרמטר שאילתה ?token= — עמודים, תמונות ממוזערות, חיפוש, הערות, פעולות עמוד (טבלת הבקשות המלאה נמצאת ב‑Core Concepts → How the Viewer Works). כאשר UnsafeMode הוא false, שכבת אבטחת המסמך מחוברת אוטומטית לפניו.
דוגמת ההפניה ממפה את הבקשות של הווידג'ט דרך ענף נתיב:
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());UseDoconutResources – משאבים
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)האם דף זה היה מועיל?