DoconutExtensions

רישום שירות ו‑middleware

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

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

AddDoconut – הוספה

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

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

שירותאורך חייםתפקיד
DoconutOptionsיחידאובייקט התצורה
IViewerFactoryיחידממפה הרחבות לצופים בפורמט
IDocumentSessionManagerיחידToken → מטמון סשן (IMemoryCache גם נרשם)
IDoconutLicenseServiceיחידרישיון נטען פעם אחת באתחול (עדיפות: LicenseStreamLicenseContentLicensePath → חיפוש אוטומטי)
PageImageServiceיחידצינור תמונת עמוד (סימן מים/סיבוב/קנה מידה/הערות)
Document security (access store)יחידהענקות לקישור token-ל-session
Viewerמעברהממשק הפומבי לפתיחה/סגירה
DocumentConverterמעברממשק המרה — דורש את תוסף Converter
בדיקת בריאות "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 – שימוש

text
IApplicationBuilder UseDoconut(this IApplicationBuilder app)

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

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

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

UseDoconutResources – משאבים

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)

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