פתרון בעיות

אבחון שגיאות נפוצות

רבות מכשלי System.Web לא זורקות חריגה שניתן לראות: העמוד מחזיר 500 ריק, אייקון מחזיר 404, או בקשה לעולם לא חוזרת. דף זה מאורגן לפי מה שאתה רואה. הודעות מצוטטות הן הטקסט המילולי ש‑Doconut מייצר.

תסמינים במבט כולל

מה שאתה רואההסיבה הסבירה ביותרתיקון
כל הבקשה מחזירה 500 ריקחריגה ב‑Application_Start: תוסף ללא רישיון, אפשרות לא חוקית, תצורת חווה לא שלמה — או הפנייה מחודשת שמציינת גרסה שאינה ב‑bin\יומן אירועי Windows, Application, מקור ASP.NET. ראה כישלונות אתחול
חלק מהדפי MVC מחזירים 500 ריקRazor מקמפל תצוגות בזמן ריצה: המעטפת netstandard חסרה ב‑<compilation>, או שהתצוגה משתמשת ב‑C# חדש יותר מ‑5 (?., $"...", nameof)הוסף את המעטפת (התקנה); העבר לוגיקה מהתצוגה לבקר
דפים מציגים —, … או דומה במקום מקפים וְהַטָּעָהקבצי דף ללא סימן סדרת בתים נקראים בעזרת קוד העמודה ANSI של השרת<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" />
קונסול הדפדפן מציג 404 עבור HEAD /DocImage.axd?...&page=1המטפל רשום ללא הפועל HEADverb="GET,HEAD,POST" על המטפל
המסמך מוצג, אך אייקוני סרגל הכלים וספינר הטעינה חסריםResPath מצביע על שורש המשאבים, או מתחיל ב‑/ResPath: 'doconut-res/images'
בקשות /doconut-res/... מחזירות 404מודול המשאבים אינו רשום, runAllManagedModulesForAllRequests כבוי, או ניתוב MVC תופס את הנתיבערך <modules>, ו‑routes.IgnoreRoute("doconut-res/{*pathInfo}")
הצופה מדווח על The viewer handler could not be reached (no response).BasePath מתחיל ב‑/ ('/myapp' הופך ל‑//myapp/…, מארח אחר)BasePath: '/' בשורש האתר; 'myapp' בתיקייה וירטואלית
הצופה מדווח על Please make sure your middleware is configured.DocImage.axd השיב 404: המטפל אינו ב‑Web.config, ניתוב MVC תפס אותו, או BasePath מצביע למקום אחרערך <handlers>, routes.IgnoreRoute("{resource}.axd/{*pathInfo}"), ו‑BasePath
כל דף מציג You Are Not Authorized To View This Page.המסמך נפתח בבקשה ללא מצב סשן, מצב סשן כבוי, או שהקוקי של הסשן אינו מגיע ל‑DocImage.axdראה לא מורשה
המרה של Web Forms לעולם לא מחזירההעמוד נתקע ב‑ConvertAsync — נעילהAsync="true" + RegisterAsyncTask (תוסף ממיר)
כל דף נושא סימן מים של הערכהלא נמצא רישיון — הוא אינו ב‑<site root>\wwwrootהגדרת רישיון
וידג׳ט נטען, אך הפעולה הראשונה שלו מחזירה 404הווידג׳ט אינו מופעל, או שה‑basePath שלו אינו '/DocImage.axd'options.Add…Widget(), ו‑basePath: '/DocImage.axd'
המסמך הראשון אחרי שהאתר מתחיל או מתרענן לוקח דקה או יותר; מאוחר יותר הם מהיריםמנועי המסמכים נטענים בפתיחה הראשונה, ואנטי‑וירוס בזמן אמת סורק אותם בזמן הטעינהחימום האתר ושמירת הבריכה פעילה — ראה המסמך הראשון אחרי התחלה
העלאה גדולה מציגה דף שגיאת IISההעלאה חורגת מ‑maxRequestLength (KB) או מ‑maxAllowedContentLength (בייטים)הגדל את שני הערכים מעל הקובץ או הווידג׳ט הגדול ביותר שלך

כישלונות אתחול

חריגה שנזרקת ב‑Application_Start אינה מגיעה לדפדפן: כל בקשה מחזירה 500 ריק, ולוג ה‑IIS אינו מציג דבר שימושי. החריגה נמצאת ב‑יומן אירועי Windows (Event Viewer → Windows Logs → Application, מקור ASP.NET). הרגילות:

תוסף ללא רישיון:

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

Doconut.Viewer.<Capability>.lic של התוסף חייב להיות ב‑wwwroot, ליד Doconut.Viewer.lic. רישיון חסר וקובץ TRIAL מיושן אינם מעניקים יכולות לתוסף.

אפשרויות לא חוקיות:

text
DoconutOptions.MiddlewarePath must be a non-empty path starting with '/'.
DoconutOptions.ResourcesPath must be a non-empty path starting with '/'.
DoconutOptions.MiddlewarePath and ResourcesPath must be different paths.

אוסף שלא ניתן לטעון.

ASP.NET טוען כל אוסף ב‑bin\ כאשר היישום מתחיל, ולכן הפנייה מחודשת ב‑Web.config שמציינת גרסה שחסרה ב‑bin\ עוצרת את כל האתר. העתק את ההפניות ש‑NuGet יצר (לפרויקט בסגנון SDK, מ‑bin\<YourApp>.dll.config) במקום לערוך אותן ידנית, והעתק אותן שוב לאחר עדכוני חבילות.

אינך מורשה לצפות בדף זה.

הדף נדחה מכיוון שה‑session של ASP.NET המבקש מעולם לא קיבל את המסמך. בדוק, לפי הסדר:

  1. הפתיחה רצה עם מצב session. ב‑MVC controllers וב‑Web Forms pages יש זאת. ‏IHttpHandler מותאם אישית שפותח מסמכים חייב לממש ‏System.Web.SessionState.IRequiresSessionState, אחרת אין לו session להעניק.
  2. מצב ה‑session פעיל. <sessionState mode="Off" /> מסרב לכל דף.
  3. הקוקי מגיע למטפל. הבקשות מאותו מקור של ה‑widget נושאות ASP.NET_SessionId; סקריפט, קריאה משרת‑לשרת, או דף חוצי‑מקור ללא קookies לא עושה זאת.
  4. חוות רשת (Web farm): הפתיחה קשורה לדפדפן (DocOptions.BrowserId) והדף מעביר את הכרטיס (objViewer.View(token, access)); כל צומת משתמש במפתח החתימה זהה.

הדחייה היא תמונה המוגשת עם סטטוס 200, בגודל כ‑2 ק״ב. מנגנון שמבצע בדיקה רק של קודי סטטוס סופר זאת כדף.

לא נמצא session של המסמך. אנא פתח את המסמך מחדש.

הטוקן פג (חלון זמן זז, DocOptions.TimeOut, ברירת מחדל 60 דקות), המסמך נסגר, או — בשרת יחיד — מאגר היישום (application pool) עבר ריסול. ריסול מתרחש לפי לוח זמנים, בכל עריכת Web.config, ולאחר זמן ההמתנה של המאגר (20 דקות כברירת מחדל ב‑IIS). פתח את המסמך שוב לקבלת טוקן חדש.

פתיחת מסמך נכשלה

LicenseException עם סיבת דחייה — קובץ הרישיון נמצא אך נדחה (חתימה לא תקפה, שינוי, שחור, או בנייה מחוץ לחלון הגרסה של הרישיון). הפתיחה חסומה במקום להיות מסומנת במים.

LicenseException:

text
This document type requires the 'Dicom' plugin license.

ההרחבה מטופלת רק על ידי תוסף (כאן DICOM) שאין לו את ההרשאה.

FormatNotSupportedException — אין מציג (מובנה, תוסף, או מותאם) שטוען לתמוך בהרחבה. DoconutOptions.RegisterViewer יכול להוסיף אחד לפורמטים שלך.

InvalidDataException — התוכן פגום או אינו תואם להרחבה (קובץ ששונה שמו). אמת את ההעלאות לפני הפתיחה.

InvalidOperationException:

text
No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().

DocumentConverter נפתר ללא רישום תוסף Converter.

הפלט נראה שגוי

דפים נושאים סימן מים — לא נמצא רישיון, או שפג תוקפו או שאינו מכסה גרסה זו. תחת IIS, הרישיון חייב להיות ב‑wwwroot תחת שורש האתר (AppContext.BaseDirectory\wwwroot), ולא ב‑bin\. בדוק את IDoconutLicenseService (License.IsLicenseFileFound, IsExpired, IsVersionValid, License.RejectionMessage).

מסמכים ישנים מציגים טקסט מעוות — רשום את קידודי דפי הקוד פעם אחת, בעת האתחול:

csharp
// Global.asax.cs, Application_Start - לפני DoconutHost.Initialize.
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

גופנים שגויים או מוחלפים — השרת חסר את הגופנים של המסמך. Windows Server ללא Office מכיל פחות גופנים ממחשב פיתוח. התקן את הגופנים, או הפנה את FontFolders (ב‑WordConfig ו‑PptConfig) לתיקייה שמכילה אותם.

הערת תמונה מוצגת במציג אך הייצוא מציג תיבת "תמונה חסומה" — למארח התמונה יש כתובת פרטית או לופבק, והשרת מסרב לאחזר אותה. ראה הסברים.

תכונה עבדה במצב הערכה, שקטה בייצור

רישיון זמני פעיל מעניק כל יכולת; הרישיון שרכשת מעניק רק את מה שרכשת. ללא יכולת, קבצי החיפוש או ההערה שלו אינם נוצרים, ותוסף רשום עוצר את האתר באתחול. השווה את IsCapabilityGranted(...) עם כל תכונה שאתה משתמש בה לפני הפריסה.

החיפוש אינו מוצא דבר (או מעט מדי)

  • עבור PDF, AllowSearch לא היה מופעל כאשר המסמך נפתח — ברירת המחדל היא false. Word, Excel, ו‑PowerPoint מציגים את אותו המתג.
  • התוכן סרוק או רק תמונה, ולכן אין שכבת טקסט להתאמה.
  • HTML ו‑Microsoft Project (MPP) אינם ניתנים לחיפוש בברירת המחדל שלהם: הגדר את DefaultRender = false כדי שהם יוצגו דרך פרויקט PDF עם טקסט.
  • objViewer.CanSearch() הוא false לאחר האתחול: הפורמט המפוענח אין לו נתיב חיפוש. זה נפרד מרישיון החיפוש; בדוק את שניהם.
  • הדף קורא את ערך ההחזרה של objViewer.Search(...) — הספירה מגיעה בפרמטר השלישי שלו, קריאת חזרה (callback).

עדיין תקועים?

שחזרו את הבעיה עם ההגדרה המינימלית מהתחלה מהירה. אם זה משחזר שם, פנו לתמיכה עם המסמך, הGlobal.asax.cs שלכם, החלקים של Doconut בWeb.config, וכניסת יומן האירועים של Windows אם קיימת.

האם דף זה היה מועיל?