Installation
Fügen Sie Doconut zu Ihrer .NET Framework 4.7.2 Webanwendung hinzu
Doconut.NETFramework hostet den Doconut-Viewer in einer klassischen ASP.NET-Anwendung auf .NET Framework 4.7.2 — IIS oder IIS Express, MVC 5 oder Web Forms. Die Einrichtung besteht aus drei Teilen: dem NuGet-Paket, zwei Registrierungen in Web.config und einem Aufruf in Global.asax. Diese Seite behandelt alle drei; Schnellstart legt dann ein Dokument auf einer Seite ab.
Voraussetzungen
- Das Webprojekt zielt auf .NET Framework 4.7.2 oder höher ab. Ein 4.7-Projekt kann dieses Paket nicht verwenden; richten Sie es zuerst neu aus.
- Die Site läuft in der integrierten Pipeline (Standard für IIS- und IIS Express-Anwendungspools).
Diese Seite behandelt Doconut.NETFramework 26.9.0 und neuer. Versionen 26.8.0 und früher zielten auf .NET Framework 4.7 mit einer anderen API; diese Linie ist eingestellt. Das Aktualisieren einer bestehenden Anwendung über diese Grenze hinweg wird in Migration behandelt.
Paket installieren
Aus der Package Manager Console:
Install-Package Doconut.NETFrameworkOder in einem SDK‑basierten Projekt:
dotnet add package Doconut.NETFrameworkDie Rendering‑Engine ist im Paket eingebettet: Es gibt keine separate Engine‑Assembly zum Referenzieren, Kopieren oder Bereitstellen. Optionale Funktionen werden als eigene Pakete ausgeliefert — zum Beispiel Doconut.NETFramework.Converter und Doconut.NETFramework.Dicom — und jedes benötigt eine Lizenz, die es gewährt (siehe Plug-in-System).
Web.config konfigurieren
Doconut bedient zwei Arten von Anfragen, und IIS leitet beide über Web.config weiter:
DocImage.axd— die Seite des Viewers, Miniaturbild, Suche und Annotations-Endpunkt, bereitgestellt vonDoconut.DocImageHandler./doconut-res/*— die eigenen Skripte, Stylesheets und Icons des Viewers, eingebettet in die Assembly und bereitgestellt vonDoconut.DoconutResourceModule.
Fügen Sie beide hinzu, zusammen mit den Einstellungen, von denen sie abhängen:
<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>Jede Zeile verhindert einen Fehler, der keine Ausnahme auslöst:
verb="GET,HEAD,POST"—HEADbeibehalten. Der Viewer sendet eineHEAD‑Anfrage für Seite 1, um animierte Bilder zu erkennen. Ohne dieses Verb antwortet IIS mit404, bevor der Handler ausgeführt wird: Dokumente werden zwar angezeigt, aber die Animationserkennung funktioniert nie und die Browser‑Konsole füllt sich mit 404‑Fehlern.runAllManagedModulesForAllRequests="true"—/doconut-res/*.js,.cssund.pngsehen aus wie statische Dateien, und IIS würde sie an seinen statischen Datei‑Handler übergeben, bevor das Ressourcen‑Modul sie sieht. Das Ergebnis ist ein Viewer ohne Skripte oder Icons.<globalization fileEncoding="utf-8">— Seiten‑Dateien, die als UTF‑8 ohne Byte‑Order‑Mark gespeichert sind, werden sonst mit der ANSI‑Code‑Seite des Servers gelesen, sodass jedes Nicht‑ASCII‑Zeichen doppelt kodiert im Browser ankommt (ein Gedankenstrich erscheint als—). Die Datei ist auf dem Datenträger korrekt, und die Seite deklariert weiterhin<meta charset="utf-8">.- Die
netstandard‑Assembly (MVC 5) — Razor kompiliert Views, wenn sie erstmals angefordert werden, mit einer eigenen Referenzliste, die diese Fassade nicht enthält. Eine View, die etwas Dynamisches über einen einfachen Member‑Zugriff hinaus tut, schlägt dann mitCS0012fehl und liefert ein leeres500, und nur die Seiten, die dies auslösen, schlagen fehl. Der Compiler‑Fehler erscheint nur im Windows‑Ereignis‑Log (Quelle ASP.NET). Web‑Forms‑Anwendungen benötigen diese Zeile nicht. - Upload‑Grenzen — ASP.NET liest den gesamten Anforderungskörper, bevor ein Handler ausgeführt wird, sodass ein Upload über diesen Grenzen von IIS mit einer eigenen Fehlermeldungsseite abgelehnt wird. Halten Sie
maxRequestLength(Kilobytes) undmaxAllowedContentLength(Bytes) synchron und über dem größten Datei‑Upload Ihrer Benutzer.
Zwei weitere Einstellungen sind wichtig, und beide sind in der Regel bereits korrekt:
- Session‑State bleibt aktiv. Standardmäßig wird eine Seite nur an die ASP.NET‑Session ausgeliefert, die das Dokument geöffnet hat, daher darf die Site nicht
<sessionState mode="Off" />setzen. Siehe Sitzungen & Sicherheit. - Binding‑Redirects. Behalten Sie die
<runtime>‑Binding‑Redirects, die NuGet inWeb.configschreibt. In einem SDK‑basierten Projekt kopieren Sie sie aus der erzeugtenbin\<YourApp>.dll.config, da klassisches ASP.NET Redirects nur ausWeb.configliest. Ein Redirect, der eine Version nennt, die imbin\‑Verzeichnis fehlt, stoppt die gesamte Anwendung beim Start mit einem leeren500.
Doconut in Global.asax registrieren
Es gibt keinen Builder und keine Middleware‑Pipeline in System.Web. Doconut wird einmal pro Worker‑Prozess durch DoconutHost.Initialize in Application_Start zusammengesetzt und durch DoconutHost.Shutdown in Application_End wieder freigegeben:
// 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 erstellt die Dienste, den Handler, das Ressourcenmodul und den von Ihnen genutzten eigenen Code. Ihr Code greift über DoconutHost.Services darauf zu (siehe DoconutHost). Nur der erste Aufruf konfiguriert etwas; ein zweiter Aufruf wird ignoriert. In einer MVC‑Anwendung sollten die beiden Doconut‑Pfade zudem aus dem Routing ausgeschlossen werden — Schnellstart zeigt das vollständige Application_Start.
Alle Optionen
DoconutOptions akzeptiert die folgenden einstellbaren Eigenschaften. Jede ist optional.
| Eigenschaft | Standard | Beschreibung |
|---|---|---|
UnsafeMode | false | Wenn false, liefert DocImage.axd eine Seite nur an die ASP.NET‑Sitzung, die das Dokument geöffnet hat. Wenn true, wird jede Anfrage mit dem Token bedient. Lassen Sie es false. |
ShowDoconutInfo | false | Wenn true, beantwortet eine DocImage.axd‑Anfrage ohne token ein Versionsbanner anstelle von 404. Nützlich als Schnelltest; in der Produktion deaktivieren. |
ResourcesPath | "/doconut-res" | Pfad, unter dem das Ressourcenmodul die eingebetteten Skripte, Styles und Icons bereitstellt. Ändern Sie ihn nur zusammen mit dem ResPath des Viewers und etwaigen MVC‑IgnoreRoute. |
LicensePath | "" | Vollständiger Pfad zur Lizenzdatei. Leer bedeutet, dass zur nächsten Quelle und dann zur automatischen Erkennung übergegangen wird. |
LicenseContent | "" | Rohinhalt der Lizenz — aus einer Umgebungsvariable, einem Geheimspeicher oder einer Datenbank. |
LicenseStream | null | Lizenz als Stream, einmal beim Start gelesen. |
MiddlewarePath | "/doconut" | Nicht in diesem Paket verwendet. Der Seitenendpunkt ist der in Web.config deklarierte DocImage.axd‑Handler, unabhängig von dieser Einstellung. Er wird dennoch validiert: Er muss mit / beginnen und sich von ResourcesPath unterscheiden. |
ResetLicense | false | Nicht in diesem Paket verwendet. Die Lizenz wird einmal in DoconutHost.Initialize gelesen; nach dem Ersetzen einer Lizenzdatei den Anwendungspool neu starten. |
Wenn mehr als eine Lizenzquelle angegeben ist, hat LicenseStream Vorrang vor LicenseContent, das Vorrang vor LicensePath hat, das wiederum Vorrang vor der automatischen Erkennung hat — siehe Lizenz‑Einrichtung.
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
options.ResourcesPath = "/doconut-res"; // wo die JS/CSS/Bilder des Viewers bereitgestellt werden
options.UnsafeMode = false; // Sitzungssicherheit beibehalten
options.ShowDoconutInfo = false;
});
// Der Seitenendpunkt ist hier keine Option: Er ist der in Web.config deklarierte DocImage.axd‑Handler.Nächste Schritte
- Schnellstart — öffnen Sie ein Dokument und rendern Sie es im Browser, in MVC 5 oder Web Forms.
- Lizenz‑Einrichtung — wo Doconut nach Ihrer Lizenzdatei sucht.
War diese Seite hilfreich?