DoconutExtensions

רישום שירותים וביניים

DoconutExtensions (namespace Doconut.Middleware) היא המחלקה הסטטית עם שלוש הקריאות שכל מארח Doconut מבצע: רישום שירות אחד ושתי רישומי middleware.

csharp
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // BEFORE UseDoconut()
app.UseDoconut();

AddDoconut – הוספת Doconut

text
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)

בונה את DoconutOptions, מאמת אותם באופן מיידי (ראו DoconutOptions → אימות בזמן אתחול), ומרשום את גרף השירות המלא:

שירותמשך חייםתפקיד
DoconutOptionsSingletonאובייקט הקונפיגורציה
IViewerFactorySingletonממפה הרחבות לצופני פורמט
IDocumentSessionManagerSingletonToken → מטמון סשן (IMemoryCache נרשם גם הוא)
IDoconutLicenseServiceSingletonרישיון נטען פעם אחת באתחול (עדיפות: LicenseStreamLicenseContentLicensePath → חיפוש אוטומטי)
PageImageServiceSingletonצינור עיבוד תמונות דף (סימן מים/סיבוב/קנה מידה/הערות)
Document security (access store)Singletonהענקת גישה לקישור token‑ל‑session
ViewerTransientהממשק הציבורי לפתיחה/סגירה
DocumentConverterTransientממשק המרה — דורש את תוסף Converter
Health check "doconut"מדווח על מצב רישיון/תוקף דרך בדיקות בריאות של ASP.NET

שתי ההתנהגויות שכדאי לדעת:

  • ה-Converter דורש את התוסף שלו. ניסיון לקבל DocumentConverter ללא options.AddPlugin<ConverterPlugin>() גורר שגיאה:
text
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().
  • זכאות לתוסף מאומתת באתחול. רישיון חסר, קובץ TRIAL מיושן, או רישיון בתשלום ללא יכולת של תוסף רשום נכשל בזמן קריאת AddDoconut(). רישומים זמניים/דמו נשארים פעילים אחרי תאריך התפוגה, בעוד שערי זמן ריצה מבטלים את היכולות שפג תוקפן.

בדיקת הבריאות משולבת במנגנון ה‑ASP.NET Core הסטנדרטי — מיפוי אם ברצונכם לקבל את מצב הרישיון בנקודת הבריאות שלכם:

csharp
app.MapHealthChecks("/health");

UseDoconut – שימוש ב‑Doconut

text
IApplicationBuilder UseDoconut(this IApplicationBuilder app)

מוסיף את middleware של תמונות דף של Doconut. הוא משיב לכל בקשה שנושאת פרמטר שאילתה ?token= — דפים, תמונות ממוזערות, חיפוש, הערות, פעולות דף (טבלת הבקשות המלאה נמצאת ב‑Core Concepts → How the Viewer Works). כאשר UnsafeMode הוא false, שכבת האבטחה של המסמך מחוברת אוטומטית לפני זה.

דוגמת ההפניה ממפה את הבקשות של ה‑widget דרך ענף נתיב:

csharp
app.MapWhen(
    ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
    branch => branch.UseDoconut());

UseDoconutResources – שימוש במשאבי Doconut

text
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)

משרת את קבצי ה‑JS, CSS, תמונות וגופנים המוטמעים ב‑DoconutOptions.ResourcesPath (ברירת מחדל /doconut-res). אלו הקבצים ש‑Viewer.ReferenceCss() / ReferenceScripts() מייצרים תגיות עבורם.

תמיד יש לקרוא לזה לפני UseDoconut(). אם אזור הצופה נשאר ריק וקונסול הדפדפן מציג 404 עבור /doconut-res/..., קריאה זו חסרה או ממוקמת במקום הלא נכון.

סיכום סדר הפעולות

csharp
app.UseRouting();
app.UseSession();          // required when UnsafeMode = false
app.UseDoconutResources(); // 1st Doconut call
app.UseDoconut();          // 2nd Doconut call (or via a MapWhen branch)

האם דף זה היה מועיל?