Lisans Kurulumu
Doconut'un IIS altında lisans dosyanızı nerede aradığı
Lisans olmadan, Doconut hâlâ belgeleri render eder — her sayfa sadece bir değerlendirme filigranı taşır. Bu sayfa, Global.asax içinde lisansı sağlamanın dört yolunu, lisans sağlamadığınızda Doconut'un nerede baktığını ve bir eklentinin lisansı eksik olduğunda ne olduğunu kapsar.
Lisansı sağlamanın dört yolu
DoconutOptions içinde üç açık kaynak vardır — bir dosya yolu, bir akış veya ham içerik — ayrıca hiçbiri ayarlanmamışsa otomatik keşif vardır. Hepsi bir kez DoconutHost.Initialize içinde okunur. Birden fazla ayarlandığında, öncelik tam olarak şu şekildedir:
LicenseStream, LicenseContent, LicensePath ve otomatik keşfi geçer.
Yol ile
LicensePath'e tam bir yol verin. Göreceli bir yol, işlemin geçerli dizinine göre çözülür ve IIS altında bu, çalışan sürecin kendi klasörüdür, siteniz değil. HostingEnvironment.MapPath siteye göreli bir yolu tam bir yola dönüştürür:
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
});Dosya mevcut değilse, Doconut bir istisna atmaz ve otomatik keşfe geri dönmez: hiçbir lisans yüklemez ve görüntüleyici filigran ekler. Aynı klasördeki eklentiye özgü lisans dosyaları (Doconut.Viewer.<Capability>.lic) onunla birlikte okunur, bu yüzden LicensePath ve AddPlugin<...>() temel lisansın yanında eklenti lisansları bulunduğunda birlikte çalışır.
Akış ile
LicenseStream bir kez, başlangıçta okunur — lisansın bir dosyadan değil gömülü bir kaynaktan veya gizli bir depodan gelmesi durumunda kullanışlıdır.
// Precedence: LicenseStream > LicenseContent > LicensePath > auto-search.
Doconut.DoconutHost.Initialize(options =>
{
options.LicenseStream = licenseStream;
});İçerik ile
LicenseContent lisans metnini doğrudan alır — bir ortam değişkeni, bir veritabanı veya gizli bir depodan — böylece siteyle birlikte bir lisans dosyası dağıtmak zorunda kalmazsınız.
// 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") ?? "";
});Otomatik keşif
Üçünden hiçbiri ayarlanmazsa, Doconut lisansı kendisi arar:
// 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();İki klasör, sırasıyla, ve aranan dosyalar:
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.licIIS ve IIS Express altında, AppContext.BaseDirectory sitenin kök klasörüdür — Web.config dosyasını tutan klasör — bin klasörü değil. Bu yüzden lisans, site kökünün altındaki wwwroot içinde bulunmalıdır:
MySite\
Web.config
Global.asax
bin\
wwwroot\
Doconut.Viewer.lic
Doconut.Viewer.Converter.licProjede, wwwroot\*.lic dosyalarını Web.config yanına tutun ve klasörü siteyle birlikte dağıtın. Hiçbir derleme adımı onu bir yere kopyalamak zorunda değildir. Başka bir yerdeki bir .lic — bin\ içinde, Web.config yanına veya wwwroot içinde bir alt klasörde — asla okunmaz.
.licdosyalarını kaynak kontrolünden uzak tutun. Bunları siteyle birlikte dağıtın, ya da lisansı gizli deponuzdanLicenseContentveyaLicenseStreamaracılığıyla sağlayın.
Lisans olmadan ne olur
Eksik bir lisans istisna atmaz. DoconutHost.Initialize başarılı olur, site başlar ve görüntüleyici çalışır, ancak her sayfa bir değerlendirme filigranı taşır ve hiçbir isteğe bağlı özellik verilmez.
Bulunan ancak reddedilen bir lisans dosyası farklıdır. Geçersiz bir imza, müdahale veya lisansın sürüm penceresinin dışındaki bir derleme, OpenDocumentAsync'in nedeni belirten bir LicenseException fırlatmasına neden olur.
Eklentilerin başlangıçta lisansa ihtiyacı var
Hiçbir lisansın yetkilendirmediği bir özelliğe sahip bir eklentiyi kaydetmek, uygulamayı başlangıçta durdurur. DoconutHost.Initialize, Application_Start içinde bir istisna fırlatır:
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.System.Web altında, bu mesajı tarayıcıda görmezsiniz. Siteye yapılan her istek boş bir 500 yanıtı verir — hata sayfası, yığın izleme yok, IIS günlüğünde hiçbir şey yok. İstisna yalnızca Windows olay günlüğünde (Uygulama günlüğü, kaynak ASP.NET) kaydedilir. AddPlugin satırını ekledikten hemen sonra tüm site yanıt vermeyi durdurursa, koddan önce wwwroot içindeki lisans dosyalarını kontrol edin: eklentinin Doconut.Viewer.<Capability>.lic dosyası Doconut.Viewer.lic yanına yerleştirilmelidir ve temel lisans olmadan eklenti dosyaları hiç okunmaz.
Yüklenen lisansı doğrulama
IDoconutLicenseService, SDK'nın kullandığı aynı gerçek kaynaktır. DoconutHost.Services üzerinden çözerek kimliği doğrulanmış bir tanı uç noktası sunun veya özellik bayraklarını yönetin — lisans içeriğini asla döndürmeyin:
// 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);
}Lisans bir kez, DoconutHost.Initialize içinde okunur. Bir lisans dosyasını değiştirdikten sonra uygulama havuzunu yeniden başlatın (veya Web.config dosyasına dokunun) böylece Application_Start tekrar çalışır.
Sorun Giderme
| Belirti | Muhtemel neden | Kontrol |
|---|---|---|
| Görüntüleyici çalışıyor ancak her sayfa filigranlı | Lisans bulunamadı | .lic dosyası <site root>\wwwroot içinde mi? Yukarıdaki durum uç noktasını çağırın |
Eklenti eklendikten hemen sonra her istek boş bir 500 yanıtı veriyor | Kayıtlı bir eklentinin lisansı yok | Windows olay günlüğü, kaynak ASP.NET; eklentinin .lic dosyası Doconut.Viewer.lic yanında |
LicensePath kendi makinenizde çalışıyor ama sunucuda çalışmıyor | Göreceli bir yol, çalışan süreç klasörüne göre çözülüyor | HostingEnvironment.MapPath("~/wwwroot/...") ile oluşturun |
Değiştirilen .lic dosyası etkisiz | Lisans uygulama başladığında okunmuş | Uygulama havuzunu yeniden başlatın |
OpenDocumentAsync LicenseException fırlatıyor | Lisans bulundu ancak reddedildi | İstisna mesajını okuyun; güvenilmeyen istemcilere göstermeyin |
Sonraki adımlar
- Lisanslama — yetenekler ve çalışma zamanında nasıl kontrol edileceği.
- Sorun Giderme — filigranlar, başlangıç hataları ve diğer belirtiler.
Bu sayfa yardımcı oldu mu?