عیب‌یابی

تشخیص خطاهای رایج

بسیاری از خطاهای System.Web استثنایی را که می‌توانید ببینید برنمی‌انگیزند: صفحه یک 500 خالی برمی‌گرداند، یک آیکون 404 می‌شود، یا درخواست هرگز باز نمی‌گردد. این صفحه بر اساس آنچه مشاهده می‌کنید سازماندهی شده است. پیام‌های نقل‌قول‌شده متن دقیق Doconut هستند.

علائم به‌صورت کلی

چه می‌بینیددلیل محتملراه‌حل
هر درخواست یک 500 خالی برمی‌گردانداستثنایی در Application_Start: افزونه‌ای بدون لایسنس، گزینه نامعتبر، پیکربندی ناقص فارم — یا یک ریدایرکت بایندینگ که نسخه‌ای را نام می‌برد که در bin\ وجود نداردلاگ رویداد ویندوز، 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 نشان می‌دهدهندلر بدون فعل HEAD ثبت شده استverb="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 چیزی مفید نشان نمی‌دهد. استثنا در لاگ رویداد ویندوز (Event Viewer → Windows Logs → Application, source 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 سرو می‌شود، حدود ۲ کیلوبایت. مانیتوری که فقط کدهای وضعیت را بررسی می‌کند، آن را به عنوان یک صفحه حساب می‌کند.

نشست سند یافت نشد. لطفاً سند را دوباره باز کنید.

توکن منقضی شد (پنجره لغزشی، DocOptions.TimeOut، پیش‌فرض ۶۰ دقیقه)، سند بسته شد، یا — در یک سرور واحد — استخر برنامه بازنشانی شد. بازنشانی طبق برنامه، در هر ویرایش Web.config و پس از زمان‌سنج بیکاری استخر (به‌صورت پیش‌فرض ۲۰ دقیقه در 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(...) را می‌خواند — شمارش در آرگومان سوم آن، یک کال‌بک، می‌رسد.

هنوز هم گیر کرده‌اید؟

مشکل را با کمترین تنظیمات از شروع سریع بازتولید کنید. اگر در آنجا بازتولید شد، با سند، Global.asax.cs خود، بخش‌های Doconut از Web.config، و ورودی لاگ رویداد ویندوز (در صورت وجود) با پشتیبانی تماس بگیرید.

آیا این صفحه مفید بود؟