DoconutExtensions

Καταχώρηση υπηρεσιών και middleware

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), και καταχωρεί το πλήρες γράφημα υπηρεσιών:

ΥπηρεσίαΔιάρκεια ζωήςΡόλος
DoconutOptionsSingletonΤο αντικείμενο ρυθμίσεων
IViewerFactorySingletonΑντιστοιχίζει επεκτάσεις σε προβολείς μορφής
IDocumentSessionManagerSingletonToken → cache συνεδρίας (IMemoryCache επίσης καταχωρείται)
IDoconutLicenseServiceSingletonΆδεια φορτώνεται μία φορά κατά την εκκίνηση (προτεραιότητα: LicenseStreamLicenseContentLicensePath → αυτόματη αναζήτηση)
PageImageServiceSingletonΔιαδικασία page-image (υδατογράφημα/περιστροφή/κλιμάκωση/σημειώσεις)
Document security (access store)SingletonΠαραχωρήσεις για σύνδεση token-σε-συνεδρία
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 — χαρτογραφήστε τον αν θέλετε την κατάσταση της άδειας στο health endpoint σας:

csharp
app.MapHealthChecks("/health");

UseDoconut

text
IApplicationBuilder UseDoconut(this IApplicationBuilder app)

Προσθέτει το Doconut page-image middleware. Απαντά σε κάθε αίτημα που περιέχει την παράμετρο ερωτήματος ?token= — σελίδες, μικρογραφίες, αναζήτηση, σημειώσεις, ενέργειες σελίδας (ο πλήρης πίνακας αιτημάτων βρίσκεται στα Βασικές Έννοιες → Πώς Λειτουργεί ο Viewer). Όταν το 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)

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