عیبیابی
تشخیص خطاهای رایج
بسیاری از خطاهای 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) است. موارد معمول:
یک افزونه بدون لایسنس:
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 قدیمی هیچ قابلیت افزونهای نمیدهد.
گزینههای نامعتبر:
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 درخواستکننده هرگز سند را دریافت نکرده بود. به ترتیب بررسی کنید:
- باز کردن با حالت نشست اجرا شد. کنترلکنندههای MVC و صفحات Web Forms این را دارند. یک
IHttpHandlerسفارشی که اسناد را باز میکند بایدSystem.Web.SessionState.IRequiresSessionStateرا پیادهسازی کند، در غیر این صورت نشست برای اعطا ندارد. - حالت نشست فعال است.
<sessionState mode="Off" />هر صفحهای را رد میکند. - کوکی به هندلر میرسد. درخواستهای هممنشئ ویجت شامل
ASP.NET_SessionIdهستند؛ یک اسکریپت، تماس سرور به سرور، یا صفحهای با منبع متفاوت بدون کوکی این کار را انجام نمیدهد. - مزرعه وب: باز کردن مرورگر را به
DocOptions.BrowserIdمتصل میکند و صفحه بلیت را بهobjViewer.View(token, access)میفرستد؛ هر گره از همان کلید امضا استفاده میکند.
رد شدن یک تصویر است که با وضعیت 200 سرو میشود، حدود ۲ کیلوبایت. مانیتوری که فقط کدهای وضعیت را بررسی میکند، آن را به عنوان یک صفحه حساب میکند.
نشست سند یافت نشد. لطفاً سند را دوباره باز کنید.
توکن منقضی شد (پنجره لغزشی، DocOptions.TimeOut، پیشفرض ۶۰ دقیقه)، سند بسته شد، یا — در یک سرور واحد — استخر برنامه بازنشانی شد. بازنشانی طبق برنامه، در هر ویرایش Web.config و پس از زمانسنج بیکاری استخر (بهصورت پیشفرض ۲۰ دقیقه در IIS) رخ میدهد. سند را دوباره برای دریافت توکن جدید باز کنید.
باز کردن سند ناموفق است
LicenseException با دلیل رد — فایل لایسنس یافت شد اما رد شد (امضای نامعتبر، دستکاری، فهرست سیاه، یا ساختی خارج از بازه نسخه لایسنس). باز کردن به جای علامتگذاری مسدود میشود.
LicenseException:
This document type requires the 'Dicom' plugin license.پسوند فقط توسط یک افزونه (در اینجا DICOM) که قابلیت آن اعطا نشده است، پردازش میشود.
FormatNotSupportedException — هیچ نمایشگری (توکار، افزونه یا سفارشی) ادعای این پسوند را ندارد. DoconutOptions.RegisterViewer میتواند برای قالبهای خودتان یکی اضافه کند.
InvalidDataException — محتوا خراب است یا با پسوند آن مطابقت ندارد (فایلی که نامش تغییر یافته). قبل از باز کردن، بارگذاریها را اعتبارسنجی کنید.
InvalidOperationException:
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).
اسناد قدیمی متن خراب نمایش میدهند — رمزگذاریهای صفحه کد را یکبار در زمان راهاندازی ثبت کنید:
// 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، و ورودی لاگ رویداد ویندوز (در صورت وجود) با پشتیبانی تماس بگیرید.
آیا این صفحه مفید بود؟