DoconutExtensions
Καταχώρηση υπηρεσιών και middleware
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), και καταχωρεί το πλήρες γράφημα υπηρεσιών:
| Υπηρεσία | Διάρκεια ζωής | Ρόλος |
|---|---|---|
DoconutOptions | Singleton | Το αντικείμενο ρυθμίσεων |
IViewerFactory | Singleton | Αντιστοιχίζει επεκτάσεις σε προβολείς μορφής |
IDocumentSessionManager | Singleton | Token → cache συνεδρίας (IMemoryCache επίσης καταχωρείται) |
IDoconutLicenseService | Singleton | Άδεια φορτώνεται μία φορά κατά την εκκίνηση (προτεραιότητα: LicenseStream → LicenseContent → LicensePath → αυτόματη αναζήτηση) |
PageImageService | Singleton | Διαδικασία page-image (υδατογράφημα/περιστροφή/κλιμάκωση/σημειώσεις) |
| Document security (access store) | Singleton | Παραχωρήσεις για σύνδεση token-σε-συνεδρία |
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 — χαρτογραφήστε τον αν θέλετε την κατάσταση της άδειας στο health endpoint σας:
app.MapHealthChecks("/health");UseDoconut
IApplicationBuilder UseDoconut(this IApplicationBuilder app)Προσθέτει το Doconut page-image middleware. Απαντά σε κάθε αίτημα που περιέχει την παράμετρο ερωτήματος ?token= — σελίδες, μικρογραφίες, αναζήτηση, σημειώσεις, ενέργειες σελίδας (ο πλήρης πίνακας αιτημάτων βρίσκεται στα Βασικές Έννοιες → Πώς Λειτουργεί ο Viewer). Όταν το 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)Ήταν αυτή η σελίδα χρήσιμη;