Installation
Lägg till Doconut i din .NET Framework 4.7.2 webbapplikation
Doconut.NETFramework hostar Doconut‑visaren i en klassisk ASP.NET‑applikation på .NET Framework 4.7.2 — IIS eller IIS Express, MVC 5 eller Web Forms. Installationen består av tre delar: NuGet‑paketet, två registreringar i Web.config och ett anrop i Global.asax. Den här sidan täcker alla tre; Snabbstart placerar sedan ett dokument på en sida.
Krav
- Webbprojektet riktar sig mot .NET Framework 4.7.2 eller senare. Ett 4.7‑projekt kan inte konsumera detta paket; rikta om det först.
- Webbplatsen körs i den integrerade pipelinen (standard för IIS‑ och IIS Express‑applikationspooler).
Den här sidan täcker Doconut.NETFramework 26.9.0 och senare. Versionerna 26.8.0 och tidigare riktade sig mot .NET Framework 4.7 med ett annat API; den raden har avvecklats. Uppdatering av en befintlig applikation över den gränsen behandlas i Migration.
Installera paketet
Från Package Manager Console:
Install-Package Doconut.NETFrameworkEller i ett SDK‑stilprojekt:
dotnet add package Doconut.NETFrameworkRenderingsmotorn är inbäddad i paketet: det finns ingen separat motor‑assembly att referera till, kopiera eller distribuera. Valfria funktioner levereras som egna paket — till exempel Doconut.NETFramework.Converter och Doconut.NETFramework.Dicom — och varje paket kräver en licens som beviljar det (se Plugin‑system).
Konfigurera Web.config
Doconut hanterar två typer av förfrågningar, och IIS dirigerar båda via Web.config:
DocImage.axd— visarens sida, miniatyr, sök‑ och annoterings‑endpoint, som levereras avDoconut.DocImageHandler./doconut-res/*— visarens egna skript, stilmallar och ikoner, inbäddade i assemblyn och levererade avDoconut.DoconutResourceModule.
Lägg till båda, samt de inställningar de är beroende av:
<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>Varje rad förhindrar ett fel som inte kastar något undantag:
verb="GET,HEAD,POST"— behållHEAD. Visaren skickar enHEAD‑förfrågan för sida 1 för att upptäcka animerade bilder. Utan verbet svarar IIS med404innan hanteraren körs: dokument visas fortfarande, men animeringsdetektering fungerar aldrig och webbläsarkonsolen fylls med 404‑fel.runAllManagedModulesForAllRequests="true"—/doconut-res/*.js,.cssoch.pngser ut som statiska filer, och IIS skulle skicka dem till sin statiska fil‑handler innan resursmodulen ser dem. Resultatet blir en visare utan skript eller ikoner.<globalization fileEncoding="utf-8">— sidfiler sparade som UTF‑8 utan byte‑order‑markering läses annars med serverns ANSI‑teckenkodning, så varje icke‑ASCII‑tecken når webbläsaren dubbelkodat (ett em‑dash visas som—). Filen är korrekt på disken, och sidan deklarerar fortfarande<meta charset="utf-8">.netstandard‑assemblyn (MVC 5) — Razor kompilerar vyer när de först begärs, med sin egen referenslista som inte inkluderar detta facade. En vy som gör något dynamiskt utöver en enkel medlemsåtkomst misslyckas då medCS0012och ger ett tomt500, och endast de sidor som triggar det misslyckas. Kompilatorfelet visas bara i Windows‑händelseloggen (källa ASP.NET). Web Forms‑applikationer behöver inte denna rad.- Uppladdningsgränser — ASP.NET läser hela begärans kropp innan någon handler körs, så en uppladdning som överskrider dessa gränser avvisas av IIS med sin egen felsida. Håll
maxRequestLength(kilobyte) ochmaxAllowedContentLength(byte) i synk, och över den största fil som dina användare öppnar eller laddar upp.
Två ytterligare inställningar är viktiga, och båda är vanligtvis redan korrekta:
- Sessionsstatus förblir på. Som standard serveras en sida endast till den ASP.NET‑session som öppnade dokumentet, så webbplatsen får inte sätta
<sessionState mode="Off" />. Se Sessioner & Säkerhet. - Bindningsomdirigeringar. Behåll
<runtime>‑bindningsomdirigeringarna som NuGet skriver in iWeb.config. I ett SDK‑stilprojekt, kopiera dem från den genereradebin\<YourApp>.dll.config, eftersom klassisk ASP.NET bara läser omdirigeringar frånWeb.config. En omdirigering som refererar en version som saknas ibin\stoppar hela applikationen med ett tomt500vid start.
Registrera Doconut i Global.asax
Det finns ingen byggare och ingen middleware‑pipeline i System.Web. Doconut komponeras en gång per arbetsprocess av DoconutHost.Initialize i Application_Start, och frigörs av DoconutHost.Shutdown i 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 bygger tjänsterna som hanteraren, resursmodulen och din egen kod använder. Din kod når dem via DoconutHost.Services (se DoconutHost). Endast det första anropet konfigurerar något; ett andra anrop ignoreras. I en MVC‑applikation, håll även de två Doconut‑vägarna utanför routingen — Snabbstart visar den kompletta Application_Start.
Alla alternativ
DoconutOptions accepterar följande inställbara egenskaper. Alla är valfria.
| Egenskap | Standard | Beskrivning |
|---|---|---|
UnsafeMode | false | När false levererar DocImage.axd en sida endast till den ASP.NET‑session som öppnade dokumentet. När true levereras en begäran som bär token. Lämna den false. |
ShowDoconutInfo | false | När true svarar en DocImage.axd‑begäran utan token med en versionsbanner istället för 404. Användbart som en snabb kontroll; håll den avstängd i produktion. |
ResourcesPath | "/doconut-res" | Var resursmodulen levererar de inbäddade skripten, stilarna och ikonerna. Ändra den endast tillsammans med visarens ResPath och eventuell MVC IgnoreRoute. |
LicensePath | "" | Fullständig sökväg till licensfilen. Tom betyder att man går vidare till nästa källa, sedan till automatisk upptäckt. |
LicenseContent | "" | Rå licensinnehåll — från en miljövariabel, en hemlig lagring eller en databas. |
LicenseStream | null | Licens som en ström, läses en gång vid start. |
MiddlewarePath | "/doconut" | Används inte i detta paket. Sidans slutpunkt är DocImage.axd‑hanteraren som deklarerats i Web.config, oavsett vad detta är satt till. Den valideras fortfarande: den måste börja med / och skilja sig från ResourcesPath. |
ResetLicense | false | Används inte i detta paket. Licensen läses en gång, i DoconutHost.Initialize; återställ applikationspoolen efter att ha ersatt en licensfil. |
När mer än en licenskälla är angiven, har LicenseStream företräde framför LicenseContent, som har företräde framför LicensePath, som har företräde framför automatisk upptäckt — se Licensinställning.
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
options.ResourcesPath = "/doconut-res"; // where the viewer's JS/CSS/images are served from
options.UnsafeMode = false; // keep session security on
options.ShowDoconutInfo = false;
});
// Sidans slutpunkt är inte ett alternativ här: den är DocImage.axd‑hanteraren som deklarerats i Web.config.Nästa steg
- Snabbstart — öppna ett dokument och rendera det i webbläsaren, i MVC 5 eller Web Forms.
- Licensinställning — där Doconut letar efter din licensfil.
Var den här sidan hjälpsam?