استكشاف الأخطاء وإصلاحها

تشخيص الأخطاء الشائعة

العديد من فشل 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 — توقف (deadlock)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 (عارض الأحداث → سجلات Windows → 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) بدلاً من تعديلها يدويًا، وانسخها مرة أخرى بعد تحديث الحزم.

غير مصرح لك بعرض هذه الصفحة.

تم رفض الصفحة لأن جلسة ASP.NET المطلوبة لم تُمنح المستند أبداً. تحقق، بالترتيب:

  1. تم تشغيل الفتح بحالة الجلسة. تمتلك وحدات تحكم MVC وصفحات Web Forms ذلك. يجب على IHttpHandler مخصص يفتح المستندات تنفيذ System.Web.SessionState.IRequiresSessionState، وإلا لن تكون لديه جلسة لمنحها.
  2. حالة الجلسة مفعلة. <sessionState mode="Off" /> يرفض كل صفحة.
  3. الكوكي يصل إلى المعالج. طلبات الودجت من نفس الأصل تحمل ASP.NET_SessionId؛ سكريبت، أو نداء من خادم إلى خادم، أو صفحة عبر أصل مختلف بدون كوكي لا تفعل ذلك.
  4. مزرعة الويب: ربط الفتح المتصفح (DocOptions.BrowserId) والصفحة تمرر التذكرة (objViewer.View(token, access))؛ كل عقدة تستخدم نفس مفتاح التوقيع.

الرفض هو صورة تُقدم بحالة 200، بحجم حوالي 2 كيلوبايت. المراقب الذي يتحقق فقط من رموز الحالة يعتبرها صفحة.

لم يتم العثور على جلسة المستند. يرجى إعادة فتح المستند.

انتهت صلاحية الرمز (نافذة منزلقة، DocOptions.TimeOut، الافتراضي 60 دقيقة)، أو تم إغلاق المستند، أو — على خادم واحد — تم إعادة تدوير مجموعة التطبيقات. يحدث إعادة التدوير وفق جدول، عند كل تعديل 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 بدون Office يحتوي على خطوط أقل بكثير من جهاز التطوير. قم بتثبيت الخطوط، أو وجه FontFolders (على WordConfig و PptConfig) إلى مجلد يحتوي عليها.

تظهر تعليقة صورة في العارض لكن التصدير يحتوي على صندوق "Image blocked" — مضيف الصورة لديه عنوان خاص أو حلقة رجوع، يرفض الخادم جلبه. راجع التعليقات التوضيحية.

الميزة عملت في التقييم، صامتة في الإنتاج

ترخيص مؤقت نشط يمنح كل القدرة؛ ترخيصك المشتراة يمنح فقط ما اشتريت. بدون قدرة، لا يتم إصدار ملفات البحث أو التعليقات التوضيحية، وملحق مسجل يوقف الموقع عند بدء التشغيل. قارن IsCapabilityGranted(...) مع كل ميزة تستخدمها قبل النشر.

البحث لا يجد شيئًا (أو القليل جدًا)

  • بالنسبة لملف PDF، لم يتم تمكين AllowSearch عند فتح المستند — الإعداد الافتراضي هو false. Word وExcel وPowerPoint يعرضون نفس المفتاح.
  • المحتوى مُمسوح أو صورة فقط، لذا لا توجد طبقة نصية للمطابقة.
  • HTML وMicrosoft Project (MPP) غير قابلين للبحث في إعداداتهم الافتراضية: اضبط DefaultRender = false لتُظهر عبر إسقاط PDF مع نص.
  • objViewer.CanSearch() هو false بعد التهيئة: الصيغة المحلولة لا تملك مسار بحث. هذا منفصل عن ترخيص البحث؛ تحقق من كليهما.
  • الصفحة تقرأ قيمة الإرجاع لـ objViewer.Search(...) — العدد يصل في الوسيط الثالث، وهو استدعاء رد.

ما زلت عالقًا؟

أعد إنتاج المشكلة باستخدام الإعداد الأدنى من البدء السريع. إذا تكررت هناك، اتصل بالدعم مع المستند، Global.asax.cs الخاص بك، أجزاء Doconut من Web.config، وإدخال سجل أحداث Windows إذا كان موجودًا.

هل كانت هذه الصفحة مفيدة؟