DoconutExtensions

Καταχώρηση υπηρεσιών και μεσατικού λογισμικού

DoconutExtensions (namespace Doconut.Middleware) είναι η στατική κλάση με τις τρεις κλήσεις που κάνει κάθε Doconut host: μία καταχώρηση υπηρεσίας και δύο καταχωρήσεις 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), και καταχωρεί το πλήρες γράφημα υπηρεσιών:

ΥπηρεσίαLifetimeΡόλος
DoconutOptionsSingletonΤο αντικείμενο διαμόρφωσης
IViewerFactorySingletonΧαρτογραφεί επεκτάσεις σε προβολείς μορφής
IDocumentSessionManagerSingletonΔιακριτικό → προσωρινή μνήμη συνεδρίας (IMemoryCache καταχωρείται επίσης)
IDoconutLicenseServiceSingletonΆδεια που φορτώνεται μία φορά κατά την εκκίνηση (προτεραιότητα: LicenseStreamLicenseContentLicensePath → αυτόματη αναζήτηση)
PageImageServiceSingletonΔιαδικασία εικόνας σελίδας (υδατογράφημα/περιστροφή/κλιμάκωση/σχόλια)
Document security (access store)SingletonΑσφάλεια εγγράφου (αποθήκευση πρόσβασης)
ViewerTransientΗ δημόσια διεπαφή ανοίγματος/κλεισίματος
DocumentConverterTransientΔιεπαφή μετατροπής — απαιτεί το plugin Converter
Health check "doconut"Αναφέρει την κατάσταση άδειας/λήξης μέσω ελέγχων υγείας ASP.NET

Δύο συμπεριφορές που αξίζει να γνωρίζετε:

  • Ο Converter απαιτεί το plugin του. Η επίλυση του DocumentConverter χωρίς options.AddPlugin<ConverterPlugin>() προκαλεί εξαίρεση:
text
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().
  • Η δικαιοδοσία του plugin επικυρώνεται κατά την εκκίνηση. Μια ελλιπής άδεια, παλιό αρχείο TRIAL, ή πληρωμένη άδεια χωρίς την ικανότητα του καταχωρημένου plugin αποτυγχάνει τη στιγμή του AddDoconut(). Οι προσωρινές/Δοκιμαστικές καταχωρήσεις παραμένουν μετά τη λήξη τους, ενώ οι πύλες εκτέλεσης ανακαλούν τις ληγμένες δυνατότητες.

Ο έλεγχος υγείας ενσωματώνεται με τον τυπικό μηχανισμό ASP.NET Core — χαρτογραφήστε το αν θέλετε την κατάσταση της άδειας στο endpoint υγείας σας:

csharp
app.MapHealthChecks("/health");

UseDoconut

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

text
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)

Εξυπηρετεί τα ενσωματωμένα JS, CSS, εικόνες και γραμματοσειρές στο DoconutOptions.ResourcesPath (προεπιλογή /doconut-res). Αυτά είναι τα αρχεία για τα οποία οι μέθοδοι Viewer.ReferenceCss() / ReferenceScripts() δημιουργούν ετικέτες.

Πάντα καλέστε το πριν από το UseDoconut(). Εάν η περιοχή του viewer παραμένει κενή και η κονσόλα του προγράμματος περιήγησης εμφανίζει 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)

Ήταν αυτή η σελίδα χρήσιμη;