DoconutOptions

Διαμορφώστε τις υπηρεσίες Doconut

DoconutOptions (namespace Doconut) είναι το μοναδικό αντικείμενο διαμόρφωσης για ολόκληρο το SDK. Το διαμορφώνετε μία φορά, μέσα στο AddDoconut(), και καταχωρείται ως singleton.

Αυτή είναι μια αλλαγή θέσης όσο και σχήματος. Στη προηγούμενη βιβλιοθήκη .NET Standard, ένα στιγμιότυπο DoconutOptions δημιουργούνταν κατά το χρόνο του pipeline και παραδίδεται στο UseDoconut(new DoconutOptions { … }). Εδώ το middleware δεν παίρνει καθόλου επιλογές — όλα ορίζονται κατά την καταχώρηση της υπηρεσίας.

csharp
builder.Services.AddDoconut(options =>
{
    options.LicensePath     = "Doconut.Viewer.lic";
    options.UnsafeMode      = false;
    options.ShowDoconutInfo = false;
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

Ιδιότητες

ΤύποςΙδιότηταΠροεπιλογήΠεριγραφή
boolShowDoconutInfofalseΌταν είναι true, ένα αίτημα middleware χωρίς token επιστρέφει μια μπάνερ έκδοσης αντί για 404. Χρήσιμο ως έλεγχος καπνού· αφήστε το false στην παραγωγή.
boolUnsafeModefalseΌταν είναι true, παραλείπει τον έλεγχο ασφαλείας της συνεδρίας ASP.NET στα αιτήματα σελίδας. Αφήστε το false στην παραγωγή σε έναν μόνο κόμβο (δείτε Βασικές Έννοιες → Συνεδρίες & Ασφάλεια). Παλαιότερα ονομαζόταν UnSafeMode.
stringMiddlewarePath"/doconut"Τιμή συντονισμού για το endpoint σελίδας-εικόνας. Επικυρώνεται, αλλά δεν δημιουργεί κλάδο pipeline· διατηρήστε το ευθυγραμμισμένο με την πραγματική αντιστοίχηση UseDoconut() και το BasePath του πελάτη.
stringResourcesPath"/doconut-res"Πρόθεμα διαδρομής URL για τους ενσωματωμένους πόρους JS/CSS/εικόνας/γραμματοσειράς.
stringLicensePath""Διαδρομή προς το αρχείο άδειας. Κενό → επόμενη πηγή άδειας, μετά αυτόματη ανακάλυψη· αν δεν βρεθεί τίποτα → κατάσταση αξιολόγησης με υδατογράφημα χωρίς δυνατότητες.
stringLicenseContent""Ακατέργαστο περιεχόμενο άδειας XML (βάση δεδομένων, μεταβλητή περιβάλλοντος, διαχειριστής μυστικών). Έχει προτεραιότητα έναντι του LicensePath.
Stream?LicenseStreamnullΆδεια ως ροή, διαβάζεται μία φορά κατά την εκκίνηση. Έχει προτεραιότητα έναντι και των άλλων πηγών.
boolResetLicensefalseΚρατημένη σημαία συμβατότητας. Η τρέχουσα υλοποίηση δεν την χρησιμοποιεί· επανεκκινήστε την εφαρμογή μετά την αντικατάσταση μιας άδειας.
DoconutPluginRegistryPluginRegistryΚαταχώρηση μόνο για ανάγνωση που συλλέγει συνεισφορές plugin· χρησιμοποιείται από το εργοστάσιο προβολέα. Συμπληρώνεται μέσω AddPlugin<T>().

Προτεραιότητα άδειας (επιβάλλεται κατά την καταχώρηση της υπηρεσίας): LicenseStreamLicenseContentLicensePath → αυτόματη ανακάλυψη (δείτε Ξεκινώντας → Ρύθμιση Άδειας).

Μέθοδοι

AddPlugin()

text
DoconutOptions AddPlugin<TPlugin>() where TPlugin : IDoconutPlugin, new()

Χρησιμοποιήστε αυτή τη μέθοδο για τα κυκλοφορημένα πακέτα Converter και DICOM με επιλογή opt‑in. Η Σχολιασμός και η κανονική Αναζήτηση είναι ενσωματωμένες λειτουργίες με άδεια και δεν χρησιμοποιούν το AddPlugin<TPlugin>().

Καταχωρεί ένα plugin πρώτου μέρους (Converter, DICOM). Fluent — επιστρέφει το αντικείμενο επιλογών. Το AddDoconut() ρίχνει InvalidOperationException για έλλειψη άδειας, παλιό αρχείο TRIAL, ή πληρωμένη άδεια που δεν παρέχει τη δυνατότητα του plugin. Οι προσωρινές/Δοκιμαστικές καταχωρίσεις διατηρούνται μετά τη λήξη και υπόκεινται στην πύλη χρόνου εκτέλεσης (δείτε Βασικές Έννοιες → Σύστημα Plugin).

Το widget Converter με επιλογή opt‑in ενεργοποιείται με AddConverterWidget() και εμφανίζεται μέσω της μόνο για ανάγνωση ιδιότητας ConverterWidget; οι επιλογές του τεκμηριώνονται στη σελίδα Converter Plugin (Plugins → Converter Plugin).

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — leading dot optional
    Func<IFormatViewer> factory,
    Func<BaseConfig>? defaultConfig = null)

Καταχωρεί έναν προσαρμοσμένο προβολέα για μια επέκταση αρχείου. Οι προσαρμοσμένοι προβολείς έχουν προτεραιότητα έναντι των ενσωματωμένων και των προβολέων plugin και δεν περιορίζονται από άδεια. Όταν το defaultConfig παραλείπεται και ένα έγγραφο ανοίγει χωρίς ρητή ρύθμιση, χρησιμοποιείται ένα ImageConfig.

Ρίχνει ArgumentException (Extension must be a non-empty file extension.) για κενή επέκταση και ArgumentNullException για null factory.

Επικύρωση εκκίνησης

AddDoconut() επικυρώνει τις επιλογές fail‑fast, ώστε μια λανθασμένη διαμόρφωση να εμφανίζεται ως σαφής εξαίρεση κατά την εκκίνηση αντί για μπερδεμένα 404 κατά το αίτημα:

text
DoconutOptions.MiddlewarePath must be a non-empty path starting with '/'.
DoconutOptions.ResourcesPath must be a non-empty path starting with '/'.
DoconutOptions.MiddlewarePath and ResourcesPath must be different paths.

Κοινές διαμορφώσεις

csharp
// Production: explicit license, everything locked down (all security defaults)
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});

// Custom paths (e.g. to avoid a route conflict)
builder.Services.AddDoconut(options =>
{
    options.MiddlewarePath = "/docs-engine";
    options.ResourcesPath  = "/docs-assets";
});

Όταν αλλάζετε το ResourcesPath, διατηρήστε το ResPath του widget πελάτη σε συγχρονισμό (δείτε ViewerConfig). Αυτό είναι μία από τις δύο ρυθμίσεις στην πλευρά του πελάτη που αποτυγχάνουν χωρίς μήνυμα σφάλματος.

MiddlewarePath δεν είναι αυτόματος χαρτογράφος διαδρομών ASP.NET Core. Αν το Doconut πρέπει να απαντά μόνο κάτω από ένα προσαρμοσμένο πρόθεμα, τοποθετήστε το UseDoconut() σε εκείνο τον κλάδο (π.χ. με app.Map("/docs-engine", branch => branch.UseDoconut())) και ορίστε το BasePath του πελάτη στην ίδια URL. Η εφαρμογή αναφοράς, αντίθετα, διατηρεί το ιστορικό σχήμα αιτήματος DocImage.axd σε κλάδο MapWhen με BasePath: '/'.

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