Licensinställning
Var Doconut letar efter din licensfil under IIS
Utan en licens renderar Doconut fortfarande dokument — varje sida har bara ett utvärderingsvattenstämpel. Denna sida täcker de fyra sätten att tillhandahålla en licens i Global.asax, var Doconut letar när du inte anger någon, och vad som händer när ett plugins licens saknas.
Fyra sätt att tillhandahålla en licens
Det finns tre explicita källor i DoconutOptions — en filsökväg, en ström eller rått innehåll — plus automatisk upptäckt när ingen av dem är angiven. Alla läses en gång, i DoconutHost.Initialize. När mer än en är angiven är prioriteringen exakt:
LicenseStream slår LicenseContent slår LicensePath slår automatisk upptäckt.
Via sökväg
Ge LicensePath en fullständig sökväg. En relativ sökväg löses mot processens aktuella katalog, och under IIS är det arbetsprocessens egen mapp, inte din webbplats. HostingEnvironment.MapPath omvandlar en webbplatsrelativ sökväg till en fullständig:
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
});Om filen inte finns kastar Doconut inte ett undantag och faller inte tillbaka på automatisk upptäkt: den laddar ingen licens, och visaren vattenstämplar. Licensfilerna per plugin i samma mapp (Doconut.Viewer.<Capability>.lic) läses tillsammans med den, så LicensePath och AddPlugin<...>() fungerar ihop när plugin‑licenserna ligger bredvid grundlicensen.
Via ström
LicenseStream läses en gång, vid uppstart — användbart när licensen kommer från en inbäddad resurs eller en hemlig lagring snarare än en fil på disk.
// Precedence: LicenseStream > LicenseContent > LicensePath > auto-search.
Doconut.DoconutHost.Initialize(options =>
{
options.LicenseStream = licenseStream;
});Via innehåll
LicenseContent tar själva licenstexten — från en miljövariabel, en databas eller en hemlig lagring — så ingen licensfil behöver distribueras med webbplatsen.
// 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") ?? "";
});Automatisk upptäkt
Ställ in ingen av de tre, så söker Doconut efter licensen själv:
// 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();De två mapparna, i ordning, och filerna som söks efter:
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.licUnder IIS och IIS Express är AppContext.BaseDirectory webbplatsens rotmapp — den som innehåller Web.config — inte dess bin‑mapp. Så licensen ska ligga i wwwroot under webbplatsens rot:
MySite\
Web.config
Global.asax
bin\
wwwroot\
Doconut.Viewer.lic
Doconut.Viewer.Converter.licI projektet, håll wwwroot\*.lic bredvid Web.config och distribuera mappen med webbplatsen. Inget byggsteg behöver kopiera den någonstans. En .lic någon annanstans — i bin\, bredvid Web.config, eller i en undermapp till wwwroot — läses aldrig.
Håll
.lic‑filer utanför källkontrollen. Distribuera dem tillsammans med webbplatsen, eller tillhandahåll licensen viaLicenseContentellerLicenseStreamfrån din hemliga lagring.
Vad händer utan licens
En saknad licens kastar inte ett undantag. DoconutHost.Initialize lyckas, webbplatsen startar och visaren körs, men varje sida har en utvärderingsvattenstämpel och ingen valfri funktion beviljas.
En licensfil som hittas men avvisas är annorlunda. En ogiltig signatur, manipulering eller en byggnad utanför licensens versionsfönster får OpenDocumentAsync att kasta LicenseException med orsaken.
Plugins behöver sin licens vid uppstart
Att registrera en plugin vars funktion ingen licens beviljar stoppar applikationen vid uppstart. DoconutHost.Initialize kastar i 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.Under System.Web ser du inte det meddelandet i webbläsaren. Varje förfrågan till webbplatsen svarar med en tom 500 — ingen felsida, ingen stackspårning, inget i IIS‑loggen. Undantaget registreras endast i Windows händelseloggen (Applikationslogg, källa ASP.NET). Om hela webbplatsen slutar svara direkt efter att du lagt till en AddPlugin‑rad, kontrollera licensfilerna i wwwroot innan koden: pluginens Doconut.Viewer.<Capability>.lic måste ligga bredvid Doconut.Viewer.lic, och utan grundlicensen läses plugin‑filerna inte alls.
Verifiera den laddade licensen
IDoconutLicenseService är samma sanningskälla som SDK använder. Hämta den från DoconutHost.Services för att exponera en autentiserad diagnostik‑endpoint eller styra funktionsflaggor — returnera aldrig licensinnehåll:
// 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);
}Licensen läses en gång, i DoconutHost.Initialize. Efter att ha ersatt en licensfil, återvinn applikationspoolen (eller ändra Web.config) så att Application_Start körs igen.
Felsökning
| Symtom | Trolig orsak | Kontrollera |
|---|---|---|
| Visaren fungerar men varje sida är vattenstämplad | Ingen licens hittades | Finns .lic i <site root>\wwwroot? Anropa status‑endpointen ovan |
Varje förfrågan svarar med en tom 500 direkt efter att ha lagt till en plugin | En registrerad plugin har ingen licens som beviljar den | Windows händelselog, källa ASP.NET; pluginens .lic bredvid Doconut.Viewer.lic |
LicensePath fungerar på din maskin men inte på servern | En relativ sökväg som löses mot arbetsprocessens mapp | Bygg den med HostingEnvironment.MapPath("~/wwwroot/...") |
En ersatt .lic‑fil har ingen effekt | Licensen lästes när applikationen startade | Återvinn applikationspoolen |
OpenDocumentAsync kastar LicenseException | Licensen hittades men avvisades | Läs undantagsmeddelandet; visa det inte för opålitliga klienter |
Nästa steg
- Licensiering — funktioner och hur du kontrollerar dem vid körning.
- Felsökning — vattenstämplar, uppstartsfel och andra symptom.
Var den här sidan hjälpsam?