DoconutOptions

Konfiguruj usługi Doconut

DoconutOptions (namespace Doconut) jest jedynym obiektem konfiguracyjnym dla całego SDK. Konfigurujesz go raz, w wywołaniu zwrotnym, które przekazujesz do DoconutHost.Initialize w Application_Start.

csharp
Doconut.DoconutHost.Initialize(options =>
{
    options.LicensePath     = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
    options.UnsafeMode      = false;
    options.ShowDoconutInfo = false;
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

Właściwości

TypWłaściwośćDomyślneOpis
boolUnsafeModefalseGdy false, DocImage.axd serwuje stronę tylko do sesji ASP.NET, która otworzyła dokument (lub, w farmie, do przeglądarki z nazwami podpisanych biletów). Gdy true, każde żądanie niosące token jest obsługiwane. Pozostaw false — zobacz Sesje i bezpieczeństwo.
boolShowDoconutInfofalseGdy true, żądanie DocImage.axd bez tokenu odpowiada Doconut <version> is running on <host> zamiast 404. Przydatne jako szybka kontrola; pozostaw false w produkcji.
stringResourcesPath"/doconut-res"Prefiks URL, pod którym moduł zasobów serwuje osadzone skrypty, style i obrazy.
stringLicensePath""Pełna ścieżka do pliku licencji. Pusty → następne źródło licencji, potem automatyczne wykrywanie; brak wyniku → wersja próbna z wodnym znakiem i bez możliwości.
stringLicenseContent""Surowa zawartość licencji (baza danych, zmienna środowiskowa, magazyn tajemnic). Ma pierwszeństwo przed LicensePath.
Stream?LicenseStreamnullLicencja jako strumień, odczytywana raz przy uruchomieniu. Ma pierwszeństwo przed oboma innymi źródłami.
stringMiddlewarePath"/doconut"Nie używane przez System.Web. Punkt końcowy strony jest zawsze obsługiwany przez handler DocImage.axd zadeklarowany w Web.config. Wartość jest nadal walidowana przy starcie (zobacz poniżej).
boolResetLicensefalseNie używane. Licencja jest odczytywana raz, w DoconutHost.Initialize; zrestartuj pulę aplikacji po wymianie licencji.
DoconutPluginRegistryPluginRegistry—Rejestr tylko do odczytu wkładów wtyczek, wypełniany przez AddPlugin<T>().

Priorytet licencji: LicenseStream → LicenseContent → LicensePath → automatyczne wykrywanie (zobacz Konfiguracja licencji).

Metody

AddPlugin<TPlugin>()

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

Rejestruje wtyczkę (Converter, DICOM). Fluent — zwraca instancję opcji. Annotation i Search są wbudowanymi funkcjami licencjonowanymi i nie używają tego.

Jeśli żadna aktywna licencja nie przyznaje wtyczce możliwości, DoconutHost.Initialize rzuca InvalidOperationException z Application_Start, a strona odpowiada na każde żądanie pustym 500, dopóki problem nie zostanie rozwiązany; komunikat znajduje się w dzienniku zdarzeń Windows (zobacz System wtyczek).

Add…Widget()

text
DoconutOptions AddConverterWidget(Action<ConverterWidgetOptions>? configure = null)

Wbudowane widżety są wyłączone domyślnie. Każde wywołanie Add…Widget() włącza endpointy tego widżetu w DocImage.axd i wymaga zarejestrowania odpowiedniej wtyczki. Moduł zasobów serwuje skrypt widżetu niezależnie od tego, czy go włączyłeś, więc widżet, który się ładuje i rysuje, ale na pierwszej akcji odpowiada 404, nie ma tego wywołania. Widżet Converter jest udokumentowany w Wtyczka Converter.

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — opcjonalna kropka na początku
    Func<IFormatViewer> factory,
    Func<BaseConfig>? defaultConfig = null)

Rejestruje niestandardowy podgląd dla rozszerzenia pliku. Niestandardowe podglądy mają pierwszeństwo przed wbudowanymi i podglądami wtyczek i nie są ograniczone licencją. Gdy defaultConfig jest pominięte i dokument otwiera się bez wyraźnej konfiguracji, używany jest ImageConfig.

Rzuca ArgumentException (Extension must be a non-empty file extension.) przy pustym rozszerzeniu i ArgumentNullException przy null factory.

Walidacja przy starcie

DoconutHost.Initialize waliduje opcje przed budowaniem czegokolwiek:

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.

MiddlewarePath jest sprawdzane, mimo że System.Web nigdy go nie używa, więc pozostaw je w wartości domyślnej. Podobnie jak każde wyjątek rzucony z Application_Start, niepowodzenie walidacji pojawia się jako pusty 500 przy każdym żądaniu, a komunikat znajduje się w dzienniku zdarzeń Windows.

Typowe konfiguracje

csharp
// Produkcja: jawna licencja, wszystko inne w bezpiecznym ustawieniu domyślnym.
public static void ProductionLicense() =>
    Doconut.DoconutHost.Initialize(options =>
    {
        options.LicenseContent = Environment.GetEnvironmentVariable("DOCONUT_LICENSE") ?? "";
    });

// Niestandardowa ścieżka zasobów (np. aby uniknąć konfliktu trasy). Zachowaj ResPath przeglądarki i wszelkie MVC
// IgnoreRoute w zgodzie z tym: "/docs-assets" oznacza ResPath: 'docs-assets/images'.
public static void CustomResourcePath() =>
    Doconut.DoconutHost.Initialize(options =>
    {
        options.ResourcesPath = "/docs-assets";
    });

Gdy zmieniasz ResourcesPath, zmień jednocześnie trzy rzeczy: opcję, ResPath widżetu ('docs-assets/images' dla "/docs-assets") oraz, w MVC, IgnoreRoute dla ścieżki zasobu (routes.IgnoreRoute("docs-assets/{*pathInfo}")). Endpoint DocImage.axd nie przemieszcza się: jego ścieżka jest ustawiana przez atrybut path handlera w Web.config.

Czy ta strona była pomocna?