Instalace
Přidejte Doconut do vaší webové aplikace .NET Framework 4.7.2
Doconut.NETFramework hostuje Doconut viewer v klasické aplikaci ASP.NET na .NET Framework 4.7.2 — IIS nebo IIS Express, MVC 5 nebo Web Forms. Instalace má tři části: balíček NuGet, dvě registrace v Web.config a jedno volání v Global.asax. Tato stránka pokrývá všechny tři; Rychlý start pak umístí dokument na stránku.
Požadavky
- Webový projekt cílí na .NET Framework 4.7.2 nebo novější. Projekt 4.7 nemůže tento balíček použít; nejprve jej přecilte.
- Stránka běží v integrovaném pipeline (výchozí nastavení pro aplikační pooly IIS a IIS Express).
Tato stránka pokrývá Doconut.NETFramework 26.9.0 a novější. Verze 26.8.0 a starší cílily .NET Framework 4.7 s odlišným API; tato linie je ukončena. Aktualizace existující aplikace přes tuto hranici je popsána v Migraci.
Instalace balíčku
Z konzole Package Manager:
Install-Package Doconut.NETFrameworkNebo v projektu typu SDK:
dotnet add package Doconut.NETFrameworkRenderovací engine je zabudován v balíčku: neexistuje samostatný engine assembly, který byste museli odkazovat, kopírovat nebo nasazovat. Volitelné funkce jsou dodávány jako samostatné balíčky — například Doconut.NETFramework.Converter a Doconut.NETFramework.Dicom — a každý z nich vyžaduje licenci, která mu to umožňuje (viz Systém pluginů).
Konfigurace Web.config
Doconut poskytuje dva typy požadavků a IIS je směruje oba přes Web.config:
DocImage.axd— stránka prohlížeče, miniatury, vyhledávání a koncový bod anotací, obsluhovanýDoconut.DocImageHandler./doconut-res/*— vlastní skripty, stylové soubory a ikony prohlížeče, vložené do assembly a obsluhovanéDoconut.DoconutResourceModule.
Přidejte oba spolu s nastaveními, na nichž závisí:
<configuration>
<system.web>
<!-- MVC 5 only: Razor compiles views at run time and needs the netstandard facade. -->
<compilation targetFramework="4.7.2">
<assemblies>
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" />
</assemblies>
</compilation>
<!-- maxRequestLength is in KILOBYTES: 200 MB. -->
<httpRuntime targetFramework="4.7.2" maxRequestLength="204800" />
<!-- Read .cshtml and .aspx files as UTF-8, not as the server's ANSI code page. -->
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- maxAllowedContentLength is in BYTES: the same 200 MB. -->
<requestLimits maxAllowedContentLength="209715200" />
</requestFiltering>
</security>
<modules runAllManagedModulesForAllRequests="true">
<add name="DoconutResourceModule" type="Doconut.DoconutResourceModule, Doconut" />
</modules>
<handlers>
<add name="DocImage" verb="GET,HEAD,POST" path="DocImage.axd"
type="Doconut.DocImageHandler, Doconut" />
</handlers>
</system.webServer>
</configuration>Každý řádek zabraňuje selhání, které nevyvolá výjimku:
verb="GET,HEAD,POST"— ponechteHEAD. Prohlížeč odesílá požadavekHEADna stránku 1, aby zjistil animované obrázky. Bez tohoto slovesa IIS odpoví404před spuštěním handleru: dokumenty se stále zobrazí, ale detekce animace nikdy nefunguje a konzole prohlížeče se zaplní 404.runAllManagedModulesForAllRequests="true"—/doconut-res/*.js,.cssa.pngvypadají jako statické soubory a IIS by je předal svému handleru pro statické soubory dříve, než je zachytí modul zdrojů. Výsledkem je prohlížeč bez skriptů a ikon.<globalization fileEncoding="utf-8">— soubory stránek uložené jako UTF‑8 bez BOM jsou jinak čteny s ANSI kódovou stránkou serveru, takže každý ne‑ASCII znak dorazí do prohlížeče dvojitě zakódovaný (em dash se zobrazí jako—). Soubor je na disku správný a stránka stále deklaruje<meta charset="utf-8">.- Assemblie
netstandard(MVC 5) — Razor kompiluje pohledy při první žádosti, s vlastní seznamem referencí, který tuto fasádu neobsahuje. Pohled, který dělá něco dynamického nad rámec prostého přístupu k členu, selže sCS0012a vrátí prázdný500, a selžou jen stránky, které to vyvolají. Chyba kompilátoru se objeví jen v protokolu událostí Windows (zdroj ASP.NET). Aplikace Web Forms tuto řádku nepotřebují. - Limity nahrávání — ASP.NET načte celé tělo požadavku před tím, než se spustí jakýkoli handler, takže nahrání přesahující tyto limity je IIS odmítne se svou chybovou stránkou. Udržujte
maxRequestLength(kilobajty) amaxAllowedContentLength(bajty) v souladu a nad největší soubor, který uživatelé otevírají nebo nahrávají.
Další dvě nastavení jsou důležitá a obvykle jsou již správně nastavena:
- Stav relace zůstává zapnutý. Ve výchozím nastavení je stránka podávána jen ASP.NET relaci, která dokument otevřela, takže stránka nesmí nastavit
<sessionState mode="Off" />. Viz Relace a zabezpečení. - Přesměrování vazeb. Zachovejte přesměrování vazeb
<runtime>, která NuGet zapisuje doWeb.config. V projektu typu SDK je zkopírujte z vygenerovanéhobin\<YourApp>.dll.config, protože klasické ASP.NET čte přesměrování jen zWeb.config. Přesměrování, které uvádí verzi chybějící vbin\, zastaví celou aplikaci s prázdným500při spuštění.
Zaregistrujte Doconut v Global.asax
V System.Web neexistuje žádný builder ani middleware pipeline. Doconut je sestaven jednou na pracovní proces pomocí DoconutHost.Initialize v Application_Start a uvolněn pomocí DoconutHost.Shutdown v Application_End:
// Global.asax.cs
protected void Application_Start()
{
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
});
}
protected void Application_End()
{
Doconut.DoconutHost.Shutdown();
}DoconutHost.Initialize vytvoří služby, které používá handler, modul zdrojů a váš vlastní kód. Váš kód k nim přistupuje přes DoconutHost.Services (viz DoconutHost). Pouze první volání něco nakonfiguruje; druhé volání je ignorováno. V aplikaci MVC také udržujte dvě cesty Doconut mimo směrování — Rychlý start ukazuje kompletní Application_Start.
Všechny možnosti
DoconutOptions přijímá následující nastavitelná vlastnosti. Každá je volitelná.
| Vlastnost | Výchozí | Popis |
|---|---|---|
UnsafeMode | false | Když je false, DocImage.axd poskytuje stránku pouze ASP.NET relaci, která dokument otevřela. Když je true, je obsloužena jakákoli žádost nesoucí token. Nechte nastaveno na false. |
ShowDoconutInfo | false | Když je true, požadavek DocImage.axd bez token vrátí banner verze místo 404. Užitečné jako rychlá kontrola; v produkci nechte vypnuto. |
ResourcesPath | "/doconut-res" | Kde modul zdrojů poskytuje vložené skripty, styly a ikony. Změňte jen společně s ResPath prohlížeče a případným MVC IgnoreRoute. |
LicensePath | "" | Úplná cesta k souboru licence. Prázdná hodnota znamená přechod na další zdroj, poté na automatické vyhledání. |
LicenseContent | "" | Surový obsah licence — z proměnné prostředí, tajného úložiště nebo databáze. |
LicenseStream | null | Licence jako stream, načtená jednou při startu. |
MiddlewarePath | "/doconut" | Nepoužívá se v tomto balíčku. Cílový bod stránky je handler DocImage.axd deklarovaný v Web.config, bez ohledu na nastavení. Stále se validuje: musí začínat / a lišit se od ResourcesPath. |
ResetLicense | false | Nepoužívá se v tomto balíčku. Licence je načtena jednou v DoconutHost.Initialize; po výměně souboru licence recyklujte aplikační pool. |
Když je nastaveno více zdrojů licence, LicenseStream má přednost před LicenseContent, který má přednost před LicensePath, který má přednost před automatickým vyhledáním — viz Nastavení licence.
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
options.ResourcesPath = "/doconut-res"; // kde jsou servírovány JS/CSS/obrázky prohlížeče
options.UnsafeMode = false; // zachovat zabezpečení relace
options.ShowDoconutInfo = false;
});
// Cílový bod stránky zde není volitelný: je to handler DocImage.axd deklarovaný v souboru Web.config.Další kroky
- Rychlý start — otevřete dokument a vykreslete jej v prohlížeči, v MVC 5 nebo Web Forms.
- Nastavení licence — kde Doconut hledá váš soubor licence.
Byla tato stránka užitečná?