התקנה
הוסף את Doconut ליישום האינטרנט שלך ב‑.NET Framework 4.7.2
Doconut.NETFramework מארח את מציג Doconut ביישום ASP.NET קלאסי על .NET Framework 4.7.2 — IIS או IIS Express, MVC 5 או Web Forms. ההגדרה מורכבת משלושה חלקים: חבילת ה‑NuGet, שני רישומים ב‑Web.config, וקורא אחד ב‑Global.asax. דף זה מכסה את שלושת החלקים; התחלה מהירה לאחר מכן מציב מסמך בעמוד.
דרישות
- הפרויקט ממקד ב‑.NET Framework 4.7.2 או גרסה מאוחרת יותר. פרויקט 4.7 אינו יכול לצרוך חבילה זו; יש לשנות את המטרה תחילה.
- האתר פועל ב‑pipeline משולב (ברירת המחדל עבור מאגרי יישומים של IIS ו‑IIS Express).
דף זה מכסה את Doconut.NETFramework 26.9.0 ומעלה. גרסאות 26.8.0 וקודמות ממקדות .NET Framework 4.7 עם API שונה; קו זה הופסק. עדכון יישום קיים מעבר לגבול זה מכוסה ב‑הגירה.
התקנת החבילה
מהקונסול של מנהל החבילות:
Install-Package Doconut.NETFrameworkאו, בפרויקט בסגנון SDK:
dotnet add package Doconut.NETFrameworkמנוע הרינדור משובץ בחבילה: אין אסמבליית מנוע נפרדת להפניה, העתקה או פריסה. יכולות אופציונליות נשלחות כחבילות נפרדות — לדוגמה Doconut.NETFramework.Converter ו‑Doconut.NETFramework.Dicom — ולכל אחת נדרש רישיון שמאפשר זאת (ראו מערכת תוספים).
הגדרת Web.config
Doconut משרת שני סוגי בקשות, ו‑IIS מעביר את שניהם דרך Web.config:
DocImage.axd— דף המציג, תמונה ממוזערת, חיפוש ונקודת קצה של הערות, משרת על‑ידיDoconut.DocImageHandler./doconut-res/*— הסקריפטים, קבצי ה‑CSS והאיקונים של המציג, משובצים באסמבליה ומשרתים על‑ידיDoconut.DoconutResourceModule.
הוסיפו את שניהם, יחד עם ההגדרות שעליהם הם תלויים:
<configuration>
<system.web>
<!-- רק MVC 5: Razor מקמפל תצוגות בזמן ריצה וצריך את המעטפת netstandard. -->
<compilation targetFramework="4.7.2">
<assemblies>
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" />
</assemblies>
</compilation>
<!-- maxRequestLength נמדד בקילובייטים: 200 MB. -->
<httpRuntime targetFramework="4.7.2" maxRequestLength="204800" />
<!-- קרא קבצי .cshtml ו‑.aspx כ‑UTF‑8, ולא כקוד העמודה ANSI של השרת. -->
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- maxAllowedContentLength נמדד בבייטים: אותו 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>כל שורה מונעת כשל שלא זורק חריגה:
verb="GET,HEAD,POST"— שמרו עלHEAD. המציג שולח בקשתHEADלדף 1 כדי לזהות תמונות מונפשות. ללא הפועל, IIS מחזיר404לפני שהמטפל פועל: המסמכים עדיין מוצגים, אך זיהוי האנימציה לעולם לא פועל וקונסול הדפדפן מתמלא ב‑404.runAllManagedModulesForAllRequests="true"— קבצים כמו/doconut-res/*.js,.cssו‑.pngנראים כקבצים סטטיים, ו‑IIS היה מעביר אותם למטפל הקבצים הסטטי לפני שמודול המשאבים רואה אותם. התוצאה היא מציג ללא סקריפטים או איקונים.<globalization fileEncoding="utf-8">— קבצי דף שנשמרים כ‑UTF‑8 ללא סימן סדרת בתים נקראים אחרת עם קוד העמודה ANSI של השרת, ולכן כל תו שאינו ASCII מגיע לדפדפן מקודד פעמיים (מקף ארוך מופיע כ‑—). הקובץ נכון על הדיסק, והדף עדיין מצהיר<meta charset="utf-8">.- האסמבליה
netstandard(MVC 5) — Razor מקמפל תצוגות בפעם הראשונה שהן נדרשות, עם רשימת רפרנסים משלו שאינה כוללת את המעטפת הזו. תצוגה שמבצעת כל פעולה דינמית מעבר לגישה לחבר רגיל תיכשל עםCS0012ותשיב500ריק, ורק הדפים שמפעילים אותה יכשלו. שגיאת המהדר מופיעה רק ביומן אירועי Windows (מקור ASP.NET). יישומי Web Forms אינם זקוקים לשורה זו. - מגבלות העלאה — ASP.NET קורא את כל גוף הבקשה לפני שמטפל כלשהו פועל, ולכן העלאה שמעבר למגבלות אלו נדחית על‑ידי IIS עם דף שגיאה משלו. שמרו על
maxRequestLength(קילובייט) ו‑maxAllowedContentLength(בייט) בתיאום, וגבוהות מהקובץ הגדול ביותר שהמשתמשים שלכם פותחים או מעלים.
שתי הגדרות נוספות חשובות, ובדרך כלל כבר נכונות:
- מצב סשן נשאר פעיל. כברירת מחדל דף משרת רק לסשן ASP.NET שפתח את המסמך, ולכן האתר לא צריך להגדיר
<sessionState mode="Off" />. ראו הפעלות ואבטחה. - הפניות מחדש (Binding redirects). שמרו על הפניות
<runtime>שה‑NuGet כותב ל‑Web.config. בפרויקט בסגנון SDK, העתיקו אותן מה‑bin\<YourApp>.dll.configשנוצר, מכיוון ש‑ASP.NET קלאסי קורא הפניות רק מ‑Web.config. הפנייה שמציינת גרסה חסרה בתיקייתbin\תעצור את כל היישום עם500ריק בזמן ההפעלה.
רישום Doconut ב‑Global.asax
אין בונה ואין צינור Middleware ב‑System.Web. Doconut מורכב פעם אחת לכל תהליך עובד על‑ידי DoconutHost.Initialize ב‑Application_Start, ומשוחרר על‑ידי DoconutHost.Shutdown ב‑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 בונה את השירותים שהמתאם, מודול המשאבים והקוד שלך משתמשים בו. הקוד שלך מגיע אליהם דרך DoconutHost.Services (ראו DoconutHost). רק הקריאה הראשונה מגדירה משהו; קריאה שנייה מתעלמת. ביישום MVC, יש גם לשמור את שני הנתיבים של Doconut מחוץ ל‑routing — התחלה מהירה מציגה את Application_Start המלא.
כל האפשרויות
DoconutOptions מקבלת את המאפיינים הניתנים להגדרה הבאים. כל אחד הוא אופציונלי.
| מאפיין | ברירת מחדל | תיאור |
|---|---|---|
UnsafeMode | false | כאשר false, DocImage.axd מגיש דף רק למפגש ASP.NET שפתח את המסמך. כאשר true, כל בקשה שנושאת את האסימון משרתת. השאירו זאת false. |
ShowDoconutInfo | false | כאשר true, בקשת DocImage.axd ללא token מחזירה באנר גרסה במקום 404. שימושי כבדיקה מהירה; השאירו זאת כבוי בייצור. |
ResourcesPath | "/doconut-res" | היכן שמודול המשאבים מגיש את הסקריפטים, הסגנונות והאייקונים המוטמעים. שנו זאת רק יחד עם ResPath של הצופה וכל IgnoreRoute ב‑MVC. |
LicensePath | "" | נתיב מלא לקובץ הרישיון. ריק משמעותו לעבור למקור הבא, ואז לגילוי אוטומטי. |
LicenseContent | "" | תוכן רישיון גולמי — ממשתנה סביבתי, מחסן סודות, או מסד נתונים. |
LicenseStream | null | רישיון כזרם, נקרא פעם אחת בעת האתחול. |
MiddlewarePath | "/doconut" | לא בשימוש בחבילה זו. נקודת הקצה של העמוד היא המתאם DocImage.axd המוצהר ב‑Web.config, לא משנה למה זה מוגדר. היא עדיין נבדקת: חייבת להתחיל ב‑/ ולהיות שונה מ‑ResourcesPath. |
ResetLicense | false | לא בשימוש בחבילה זו. הרישיון נקרא פעם אחת, ב‑DoconutHost.Initialize; יש למחזר את בריכת היישומים לאחר החלפת קובץ רישיון. |
כאשר מוגדר יותר ממקור רישיון אחד, LicenseStream גובר על LicenseContent, שמגבר על LicensePath, שמגבר על גילוי אוטומטי — ראו הגדרת רישיון.
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
options.ResourcesPath = "/doconut-res"; // היכן שהצופה מגיש את קבצי ה‑JS/CSS/תמונות
options.UnsafeMode = false; // שמור על אבטחת המפגש
options.ShowDoconutInfo = false;
});
// נקודת הקצה של העמוד איננה אפשרות כאן: היא המתאם DocImage.axd המוצהר ב‑Web.config.הצעדים הבאים
- התחלה מהירה — פתח מסמך והצג אותו בדפדפן, ב‑MVC 5 או Web Forms.
- הגדרת רישיון — המקום שבו Doconut מחפש את קובץ הרישיון שלך.
האם דף זה היה מועיל?