Nastavení licence
Kde Doconut hledá váš licenční soubor pod IIS
Bez licence Doconut stále vykresluje dokumenty — každá stránka nese zkušební vodoznak. Tato stránka popisuje čtyři způsoby, jak dodat licenci v Global.asax, kde Doconut hledá, když žádnou neposkytnete, a co se stane, když chybí licence pluginu.
Čtyři způsoby, jak dodat licenci
Na DoconutOptions jsou tři explicitní zdroje — cesta k souboru, stream nebo surový obsah — plus automatické vyhledávání, když není žádný nastaven. Všechny jsou načteny jednou v DoconutHost.Initialize. Když je nastaveno více než jedno, platí přesná priorita:
LicenseStream beats LicenseContent beats LicensePath beats automatic discovery.
Podle cesty
Zadejte LicensePath úplnou cestu. Relativní cesta je rozlišena vůči aktuálnímu adresáři procesu a pod IIS je to složka pracovního procesu, nikoli vaše webová stránka. HostingEnvironment.MapPath převádí cestu relativní k webu na úplnou cestu:
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
});Pokud soubor neexistuje, Doconut nevyhodí výjimku a nepřepne na automatické vyhledávání: nenačte žádnou licenci a viewer přidá vodoznak. Licenční soubory pro jednotlivé pluginy ve stejné složce (Doconut.Viewer.<Capability>.lic) jsou načteny spolu s ním, takže LicensePath a AddPlugin<...>() fungují společně, když licence pluginů leží vedle základní licence.
Pomocí streamu
LicenseStream je načten jednou při spuštění — užitečné, když licence pochází z vloženého zdroje nebo tajného úložiště místo souboru na disku.
// Precedence: LicenseStream > LicenseContent > LicensePath > auto-search.
Doconut.DoconutHost.Initialize(options =>
{
options.LicenseStream = licenseStream;
});Pomocí obsahu
LicenseContent obsahuje samotný text licence — z proměnné prostředí, databáze nebo tajného úložiště — takže není nutné nasazovat licenční soubor s webem.
// License XML from a database, an environment variable or a secret store -
// no file on disk. Beaten only by LicenseStream.
Doconut.DoconutHost.Initialize(options =>
{
options.LicenseContent = Environment.GetEnvironmentVariable("DOCONUT_LICENSE") ?? "";
});Automatické vyhledávání
Nenastavíte žádný z těchto tří, a Doconut sám hledá licenci:
// Configure nothing, and Doconut searches for the license itself, in this order:
// 1. {CurrentDirectory}\wwwroot
// 2. {AppContext.BaseDirectory}\wwwroot (under IIS: the site's root folder)
// It looks for Doconut.lic first, then Doconut.Viewer.lic, plus any per-plugin
// Doconut.Viewer.<Capability>.lic files alongside it.
Doconut.DoconutHost.Initialize();Tyto dva adresáře v pořadí a soubory, které jsou hledány:
V každé složce:
1. {CurrentDirectory}\wwwroot
2. {AppContext.BaseDirectory}\wwwroot
In each folder:
Doconut.lic — if found, this is the only file read
Doconut.Viewer.lic — base viewer license
Doconut.Viewer.<Capability>.lic — per-plugin licenses, read only next to Doconut.Viewer.licPod IIS a IIS Express je AppContext.BaseDirectory kořenová složka webu — ta, která obsahuje Web.config — nikoli její složka bin. Proto licence patří do wwwroot pod kořenovou složkou webu:
MySite\
Web.config
Global.asax
bin\
wwwroot\
Doconut.Viewer.lic
Doconut.Viewer.Converter.licV projektu udržujte wwwroot\*.lic vedle Web.config a nasazujte složku s webem. Není potřeba žádný krok sestavení, který by ji kopíroval. .lic kdekoliv jinde — v bin\, vedle Web.config nebo v podsložce wwwroot — se nikdy nečte.
Uchovávejte soubory
.licmimo správu verzí. Nasazujte je spolu s webem, nebo poskytněte licenci přesLicenseContentčiLicenseStreamz vašeho tajného úložiště.
Co se stane bez licence
Chybějící licence nevyvolá výjimku. DoconutHost.Initialize úspěšně proběhne, web se spustí a viewer běží, ale každá stránka nese zkušební vodoznak a žádná volitelná funkce není povolena.
Licenční soubor, který je nalezen, ale odmítnut, je jiný případ. Neplatný podpis, manipulace nebo sestavení mimo časové okno licence způsobí, že OpenDocumentAsync vyhodí LicenseException s důvodem.
Pluginy potřebují licenci při spuštění
Registrace pluginu, jehož funkci žádná licence nepovoluje, zastaví aplikaci při spuštění. DoconutHost.Initialize vyhodí výjimku v Application_Start:
InvalidOperationException: The Converter plugin is registered via AddPlugin but no active
license grants Converter. Remove the AddPlugin<...>() call or install a license (or
trial/demo) that includes Converter.Pod System.Web nevidíte tuto zprávu v prohlížeči. Každý požadavek na web vrací prázdný 500 — žádná chybová stránka, žádný stack trace, nic v logu IIS. Výjimka je zaznamenána pouze v protokolu událostí Windows (Application log, zdroj ASP.NET). Pokud celý web přestane reagovat hned po přidání řádku AddPlugin, zkontrolujte licenční soubory v wwwroot před kódem: .lic pluginu Doconut.Viewer.<Capability>.lic musí ležet vedle Doconut.Viewer.lic, a bez základní licence se soubory pluginu vůbec nečtou.
Ověřte načtenou licenci
IDoconutLicenseService je stejný zdroj pravdy, který SDK používá. Získejte jej z DoconutHost.Services, abyste mohli vystavit autentizovaný diagnostický endpoint nebo řídit feature flagy — nikdy nevracejte obsah licence:
// GET /License/Status
public ActionResult Status()
{
var license = Doconut.DoconutHost.Services.GetRequiredService<IDoconutLicenseService>();
return Json(new
{
viewer = license.IsViewerLicensed || license.IsTemporary,
temporary = license.IsTemporary,
search = license.IsCapabilityGranted(LicenseCapability.Search),
annotation = license.IsCapabilityGranted(LicenseCapability.Annotation),
converter = license.HasConverter,
dicom = license.HasDicom
}, JsonRequestBehavior.AllowGet);
}Licence je načtena jednou v DoconutHost.Initialize. Po výměně licenčního souboru zrecyklujte aplikační pool (nebo dotkněte se Web.config), aby se znovu spustil Application_Start.
Řešení problémů
| Příznak | Pravděpodobná příčina | Kontrola |
|---|---|---|
| Viewer funguje, ale každá stránka je vodoznakována | Nebyla nalezena žádná licence | Je soubor .lic v <site root>\wwwroot? Zavolejte výše uvedený stavový endpoint |
Každý požadavek vrací prázdný 500 hned po přidání pluginu | Registrovaný plugin nemá licenci, která by mu umožnila | Protokol událostí Windows, zdroj ASP.NET; .lic pluginu vedle Doconut.Viewer.lic |
LicensePath funguje na vašem počítači, ale ne na serveru | Relativní cesta je rozlišena vůči složce pracovního procesu | Vytvořte ji pomocí HostingEnvironment.MapPath("~/wwwroot/...") |
Vyměněný soubor .lic nemá žádný efekt | Licence byla načtena při spuštění aplikace | Zrecyklujte aplikační pool |
OpenDocumentAsync vyhazuje LicenseException | Licence byla nalezena, ale odmítnuta | Přečtěte zprávu výjimky; neukazujte ji nedůvěryhodným klientům |
Další kroky
- Licencování — funkce a jak je kontrolovat za běhu.
- Řešení problémů — vodoznaky, selhání při spuštění a další příznaky.
Byla tato stránka užitečná?