Khắc phục sự cố
Chẩn đoán các lỗi thường gặp
Nhiều lỗi System.Web không ném ra ngoại lệ nào mà bạn có thể thấy: trang trả về một 500 trống, một biểu tượng trả về 404, hoặc một yêu cầu không bao giờ trả về. Trang này được sắp xếp dựa trên những gì bạn quan sát. Các thông báo được trích dẫn là văn bản nguyên bản mà Doconut tạo ra.
Triệu chứng tổng quan
| Bạn thấy gì | Nguyên nhân có khả năng nhất | Cách khắc phục |
|---|---|---|
Mỗi yêu cầu trả về một 500 trống | Một ngoại lệ trong Application_Start: plugin không có giấy phép, tùy chọn không hợp lệ, cấu hình farm không đầy đủ — hoặc một binding redirect chỉ định phiên bản không có trong bin\ | Windows event log, Application, source ASP.NET. Xem Các lỗi khởi động |
Một số trang MVC trả về một 500 trống | Razor biên dịch các view tại thời gian chạy: facade netstandard thiếu trong <compilation>, hoặc view sử dụng C# mới hơn 5 (?., $"...", nameof) | Thêm facade (Cài đặt); chuyển logic từ view sang controller |
Các trang hiển thị —, … hoặc tương tự thay vì dấu gạch ngang và dấu phụ | Các tệp trang không có byte-order mark được đọc bằng trang mã ANSI của máy chủ | <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" /> |
Console trình duyệt hiển thị 404 cho HEAD /DocImage.axd?...&page=1 | Handler được đăng ký mà không có động từ HEAD | verb="GET,HEAD,POST" trên handler |
| Tài liệu được hiển thị, nhưng các biểu tượng thanh công cụ và vòng quay tải bị thiếu | ResPath chỉ tới gốc tài nguyên, hoặc bắt đầu bằng / | ResPath: 'doconut-res/images' |
/doconut-res/... requests answer 404 | Mô-đun tài nguyên không được đăng ký, runAllManagedModulesForAllRequests bị tắt, hoặc routing MVC bắt đường dẫn | Mục <modules>, và routes.IgnoreRoute("doconut-res/{*pathInfo}") |
Trình xem báo cáo The viewer handler could not be reached (no response). | BasePath bắt đầu với / ('/myapp' trở thành //myapp/…, máy chủ khác) | BasePath: '/' ở gốc site; 'myapp' trong thư mục ảo |
Trình xem báo cáo Please make sure your middleware is configured. | DocImage.axd trả lời 404: handler không có trong Web.config, routing MVC bắt nó, hoặc BasePath chỉ tới nơi khác | Mục <handlers>, routes.IgnoreRoute("{resource}.axd/{*pathInfo}"), và BasePath |
Mỗi trang hiển thị You Are Not Authorized To View This Page. | Tài liệu được mở trong một yêu cầu không có trạng thái session, session bị tắt, hoặc cookie session không tới DocImage.axd | Xem Không được ủy quyền |
| Quá trình chuyển đổi Web Forms không bao giờ trả về | Trang bị chặn ở ConvertAsync — một deadlock | Async="true" + RegisterAsyncTask (Plugin Chuyển đổi) |
| Mỗi trang có watermark đánh giá | Không tìm thấy giấy phép — nó không có trong <site root>\wwwroot | Cài đặt giấy phép |
Một widget tải, nhưng hành động đầu tiên trả về 404 | Widget không được bật, hoặc basePath của nó không phải là '/DocImage.axd' | options.Add…Widget(), và basePath: '/DocImage.axd' |
| Tài liệu đầu tiên sau khi site khởi động hoặc tái khởi động mất một phút hoặc hơn; các tài liệu sau nhanh | Các engine tài liệu tải khi mở lần đầu, và phần mềm diệt virus thời gian thực quét chúng khi tải | Khởi động site và giữ pool chạy — xem Tài liệu đầu tiên sau khi khởi động |
| Một tải lên lớn hiển thị trang lỗi IIS | Tải lên vượt quá maxRequestLength (KB) hoặc maxAllowedContentLength (byte) | Tăng cả hai lên trên giới hạn tệp hoặc widget lớn nhất của bạn |
Lỗi khởi động
Một ngoại lệ được ném trong Application_Start không tới trình duyệt: mọi yêu cầu trả về một 500 trống, và log IIS không hiển thị gì hữu ích. Ngoại lệ nằm trong Windows event log (Event Viewer → Windows Logs → Application, source ASP.NET). Các trường hợp thường gặp:
Plugin không có giấy phép:
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 của plugin phải nằm trong wwwroot, bên cạnh Doconut.Viewer.lic. Thiếu giấy phép và tệp legacy TRIAL không cung cấp khả năng nào cho plugin.
Tùy chọn không hợp lệ:
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.Một assembly không thể tải. ASP.NET tải mọi assembly trong bin\ khi ứng dụng khởi động, vì vậy một binding redirect trong Web.config chỉ định phiên bản thiếu trong bin\ sẽ dừng toàn bộ site. Sao chép các redirect mà NuGet tạo (đối với dự án kiểu SDK, từ bin\<YourApp>.dll.config) thay vì chỉnh sửa thủ công, và sao chép lại sau khi cập nhật gói.
Bạn không được phép xem trang này.
Trang bị từ chối vì phiên ASP.NET yêu cầu chưa bao giờ được cấp tài liệu. Kiểm tra theo thứ tự:
- Quá trình mở đã chạy với trạng thái phiên. Các bộ điều khiển MVC và các trang Web Forms đều có nó. Một
IHttpHandlertùy chỉnh để mở tài liệu phải triển khaiSystem.Web.SessionState.IRequiresSessionState, nếu không sẽ không có phiên để cấp. - Trạng thái phiên đang bật.
<sessionState mode="Off" />từ chối mọi trang. - Cookie tới được trình xử lý. Các yêu cầu cùng nguồn gốc của widget mang theo
ASP.NET_SessionId; một script, một cuộc gọi server-to-server, hoặc một trang cross-origin không có cookie thì không mang. - Môi trường web farm: quá trình mở ràng buộc trình duyệt (
DocOptions.BrowserId) và trang truyền vé (objViewer.View(token, access)); mọi nút đều sử dụng cùng một khóa ký.
Sự từ chối là một hình ảnh được phục vụ với trạng thái 200, khoảng 2 KB. Một công cụ giám sát chỉ kiểm tra mã trạng thái sẽ tính nó là một trang.
Phiên tài liệu không được tìm thấy. Vui lòng mở lại tài liệu.
Mã thông báo đã hết hạn (cửa sổ trượt, DocOptions.TimeOut, mặc định 60 phút), tài liệu đã bị đóng, hoặc — trên một máy chủ đơn — pool ứng dụng đã được tái tạo. Việc tái tạo xảy ra theo lịch, mỗi khi chỉnh sửa Web.config, và sau thời gian chờ không hoạt động của pool (20 phút theo mặc định trong IIS). Mở lại tài liệu để nhận mã thông báo mới.
Mở tài liệu thất bại
LicenseException với lý do từ chối — tệp giấy phép đã được tìm thấy nhưng bị từ chối (chữ ký không hợp lệ, bị can thiệp, bị đưa vào danh sách đen, hoặc một bản dựng nằm ngoài cửa sổ phiên bản của giấy phép). Việc mở bị chặn thay vì được gắn watermark.
LicenseException:
This document type requires the 'Dicom' plugin license.Tiện ích mở rộng này chỉ được xử lý bởi một plugin (ở đây là DICOM) mà khả năng của nó chưa được cấp.
FormatNotSupportedException — không có trình xem (có sẵn, plugin, hoặc tùy chỉnh) nào khai báo tiện ích mở rộng này. DoconutOptions.RegisterViewer có thể thêm một cho các định dạng của bạn.
InvalidDataException — nội dung bị hỏng hoặc không khớp với tiện ích mở rộng (tệp đã đổi tên). Hãy xác thực các tệp tải lên trước khi mở.
InvalidOperationException:
No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().DocumentConverter đã được giải quyết mà không đăng ký plugin Converter.
Kết quả trông sai
Các trang có watermark — không tìm thấy giấy phép, hoặc giấy phép đã hết hạn hoặc không bao phủ phiên bản này. Trên IIS, giấy phép phải nằm trong wwwroot dưới thư mục gốc của site (AppContext.BaseDirectory\wwwroot), không phải trong bin\. Kiểm tra IDoconutLicenseService (License.IsLicenseFileFound, IsExpired, IsVersionValid, License.RejectionMessage).
Các tài liệu legacy hiển thị văn bản rối — đăng ký các mã trang ký tự một lần, khi khởi động:
// Global.asax.cs, Application_Start - trước DoconutHost.Initialize.
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);Phông chữ sai hoặc được thay thế — máy chủ thiếu các phông chữ của tài liệu. Một Windows Server không có Office có ít phông chữ hơn rất nhiều so với máy phát triển. Cài đặt các phông chữ, hoặc chỉ định FontFolders (trên WordConfig và PptConfig) tới một thư mục chứa chúng.
Một chú thích hình ảnh hiển thị trong trình xem nhưng khi xuất ra lại có hộp "Image blocked" — máy chủ chứa hình ảnh có địa chỉ riêng tư hoặc loopback, mà máy chủ từ chối truy xuất. Xem Chú thích.
Tính năng hoạt động trong đánh giá, im lặng trong môi trường sản xuất
Một giấy phép Temporary hoạt động cấp mọi khả năng; giấy phép bạn mua chỉ cấp những gì bạn đã mua. Nếu thiếu khả năng, các tệp Search hoặc Annotation của nó sẽ không được tạo, và một plugin đã đăng ký sẽ dừng site khi khởi động. So sánh IsCapabilityGranted(...) với mọi tính năng bạn sử dụng trước khi triển khai.
Tìm kiếm không tìm thấy gì (hoặc quá ít)
- Đối với PDF,
AllowSearchkhông được bật khi tài liệu được mở — mặc định làfalse. Word, Excel và PowerPoint cũng có cùng công tắc. - Nội dung được quét hoặc chỉ là hình ảnh, vì vậy không có lớp văn bản để khớp.
- HTML và Microsoft Project (MPP) không thể tìm kiếm ở mặc định: đặt
DefaultRender = falseđể chúng hiển thị qua một phép chiếu PDF có văn bản. objViewer.CanSearch()làfalsesau khi khởi tạo: định dạng đã giải quyết không có đường dẫn tìm kiếm. Điều này tách biệt khỏi giấy phép Search; hãy kiểm tra cả hai.- Trang đọc giá trị trả về của
objViewer.Search(...)— số lượng đến trong đối số thứ ba của nó, một callback.
Vẫn gặp khó khăn?
Tái hiện vấn đề với cấu hình tối thiểu từ Quick Start. Nếu nó tái hiện ở đó, hãy liên hệ hỗ trợ kèm theo tài liệu, Global.asax.cs của bạn, các phần Doconut của Web.config, và mục nhập nhật ký sự kiện Windows nếu có.
Trang này có hữu ích không?