DoconutExtensions
Καταχώρηση υπηρεσιών και μεσατικού λογισμικού
DoconutExtensions (namespace Doconut.Middleware) είναι η στατική κλάση με τις τρεις κλήσεις που κάνει κάθε Doconut host: μία καταχώρηση υπηρεσίας και δύο καταχωρήσεις 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), και καταχωρεί το πλήρες γράφημα υπηρεσιών:
| Υπηρεσία | Lifetime | Ρόλος |
|---|---|---|
DoconutOptions | Singleton | Το αντικείμενο διαμόρφωσης |
IViewerFactory | Singleton | Χαρτογραφεί επεκτάσεις σε προβολείς μορφής |
IDocumentSessionManager | Singleton | Διακριτικό → προσωρινή μνήμη συνεδρίας (IMemoryCache καταχωρείται επίσης) |
IDoconutLicenseService | Singleton | Άδεια που φορτώνεται μία φορά κατά την εκκίνηση (προτεραιότητα: LicenseStream → LicenseContent → LicensePath → αυτόματη αναζήτηση) |
PageImageService | Singleton | Διαδικασία εικόνας σελίδας (υδατογράφημα/περιστροφή/κλιμάκωση/σχόλια) |
| Document security (access store) | Singleton | Ασφάλεια εγγράφου (αποθήκευση πρόσβασης) |
Viewer | Transient | Η δημόσια διεπαφή ανοίγματος/κλεισίματος |
DocumentConverter | Transient | Διεπαφή μετατροπής — απαιτεί το plugin Converter |
Health check "doconut" | — | Αναφέρει την κατάσταση άδειας/λήξης μέσω ελέγχων υγείας ASP.NET |
Δύο συμπεριφορές που αξίζει να γνωρίζετε:
- Ο Converter απαιτεί το plugin του. Η επίλυση του
DocumentConverterχωρίςoptions.AddPlugin<ConverterPlugin>()προκαλεί εξαίρεση:
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().- Η δικαιοδοσία του plugin επικυρώνεται κατά την εκκίνηση. Μια ελλιπής άδεια, παλιό αρχείο
TRIAL, ή πληρωμένη άδεια χωρίς την ικανότητα του καταχωρημένου plugin αποτυγχάνει τη στιγμή τουAddDoconut(). Οι προσωρινές/Δοκιμαστικές καταχωρήσεις παραμένουν μετά τη λήξη τους, ενώ οι πύλες εκτέλεσης ανακαλούν τις ληγμένες δυνατότητες.
Ο έλεγχος υγείας ενσωματώνεται με τον τυπικό μηχανισμό ASP.NET Core — χαρτογραφήστε το αν θέλετε την κατάσταση της άδειας στο endpoint υγείας σας:
app.MapHealthChecks("/health");UseDoconut
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
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)Εξυπηρετεί τα ενσωματωμένα JS, CSS, εικόνες και γραμματοσειρές στο DoconutOptions.ResourcesPath (προεπιλογή /doconut-res). Αυτά είναι τα αρχεία για τα οποία οι μέθοδοι Viewer.ReferenceCss() / ReferenceScripts() δημιουργούν ετικέτες.
Πάντα καλέστε το πριν από το UseDoconut(). Εάν η περιοχή του viewer παραμένει κενή και η κονσόλα του προγράμματος περιήγησης εμφανίζει 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)Ήταν αυτή η σελίδα χρήσιμη;