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:

csharp
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.

csharp
// 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.

csharp
// 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:

csharp
// 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:

text
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.lic

IIS 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:

text
MySite\
  Web.config
  Global.asax
  bin\
  wwwroot\
    Doconut.Viewer.lic
    Doconut.Viewer.Converter.lic

Projede, 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.

.lic dosyalarını kaynak kontrolünden uzak tutun. Bunları siteyle birlikte dağıtın, ya da lisansı gizli deponuzdan LicenseContent veya LicenseStream aracı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:

text
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:

csharp
// 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

BelirtiMuhtemel nedenKontrol
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ı veriyorKayıtlı bir eklentinin lisansı yokWindows olay günlüğü, kaynak ASP.NET; eklentinin .lic dosyası Doconut.Viewer.lic yanında
LicensePath kendi makinenizde çalışıyor ama sunucuda çalışmıyorGöreceli bir yol, çalışan süreç klasörüne göre çözülüyorHostingEnvironment.MapPath("~/wwwroot/...") ile oluşturun
Değiştirilen .lic dosyası etkisizLisans uygulama başladığında okunmuşUygulama havuzunu yeniden başlatın
OpenDocumentAsync LicenseException fırlatıyorLisans 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?