Как встроить просмотрщик документов без плагинов в ASP.NET
10.07.2026

Как встроить просмотрщик документов без плагинов в ASP.NET

Пошаговое руководство для инженеров .NET, которым необходимо встроить безопасный просмотрщик документов без плагинов Doconut App в проекты ASP.NET Core, MVC или WebForms.

Вы можете встроить просмотрщик документов без плагинов в приложение ASP.NET Core, MVC или WebForms, не требуя от пользователей установки чего-либо.
Enterprises that serve contracts, drawings, or design assets need a viewer that respects corporate security policies and never forces users to install legacy browser plugins. Doconut provides a .NET document viewer SDK for browser-based PDF, Office, CAD, email, and image workflows. It is not a hosted service you call: you install it into your own application, and it renders there. This post outlines the integration decisions without relying on version-specific sample code.

One clarification first, because the two products are easy to confuse. Doconut.app is the free web viewer — one file, opened in a browser tab, deleted afterwards. It is not something you embed. What you embed is Doconut Viewer, the SDK, and everything below is about that.

Встроенный просмотрщик документов, подключённый к контролируемому бэкенду ASP.NET
Встроенный просмотрщик документов, подключённый к контролируемому бэкенду ASP.NET

1. Почему безопасность и отрисовка без плагинов важны для веб‑приложений .NET

Modern enterprises treat every document as a potential data leak. When you embed a viewer that relies on ActiveX, Flash, or a native client, you inherit three risks:

РискВлияние на ваше приложение .NETКак Doconut App устраняет его
Зависимость от плагинаПользователи должны установить или включить плагин браузера, что приводит к тикетам в поддержку и проблемам с соблюдением требований.Doconut работает полностью в HTML5/Canvas, не требуя никаких плагинов.
Нешифрованный транспортФайлы передаются по HTTP или хранятся в открытом виде, нарушая GDPR, HIPAA или внутренние политики.SDK работает внутри вашего приложения, поэтому транспорт и хранение остаются под управлением TLS и политики шифрования, которую вы уже применяете. Doconut не добавляет новых переходов.
Неконтролируемый жизненный циклФайлы могут оставаться на сервере, увеличивая поверхность утечки.Управление хранением находится у вас, поскольку документы никогда не покидают вашу среду. Временный вывод рендеринга записывается туда, где вы настроили, и удаляется по вашему расписанию.

The architectural fact that matters is that the SDK is installed in your own environment and makes no calls to Doconut servers. Nothing is uploaded to us, so there is no third‑party processor to add to a data map and no vendor retention policy to reconcile with your own.

2. Подготовьте проект .NET

Use the package, documentation, and examples that match the Doconut version selected for the project. The official Doconut download page is the reliable starting point.

Before integration, confirm the target .NET runtime, record the package version, keep license configuration outside source control, and begin with representative documents. ASP.NET Core, MVC, and WebForms have different application lifecycles, so their setup should not be treated as identical.

3. Создание безопасной конечной точки загрузки — AES‑256, SSL и автоудаление

The SDK can read a document from a physical path, a stream, a byte array, a database, a URL, an intranet location, or a cloud provider such as S3, Azure Storage, Google Cloud or Dropbox. What it should never read is a path chosen by the browser. Put an authorization check between the request and the document, whatever the source. Below is one common shape for that endpoint in ASP.NET Core; the same ideas apply to MVC and WebForms.

Рабочий процесс на стороне сервера

  1. Принять загруженный файл – Используйте стандартный IFormFile (или HttpPostedFile в WebForms) для получения документа от клиента.
  2. Зашифровать файл с помощью AES‑256 – Перед сохранением потока зашифруйте его, используя проверенную библиотеку, например System.Security.Cryptography.Aes. Сохраните зашифрованный блоб в безопасном месте (например, Azure Blob Storage с включённым шифрованием на стороне сервера или бакет S3 с SSE‑AES256).
  3. Создать короткоживущий подписанный URL – Создайте URL, действительный в течение нескольких минут (например, 5 минут). URL должен быть HTTPS и включать криптографический токен, который Doconut может проверить. Большинство облачных провайдеров хранилищ предлагают функцию «pre‑signed URL», подходящую для этой задачи.
  4. Вернуть подписанный URL клиенту – Отправьте JSON‑ответ, содержащий URL. Клиент передаст этот URL просмотрщику Doconut.
  5. Запланировать автоматическое удаление – После истечения срока действия подписанного URL фоновая задача (Hangfire, Azure Functions и т.д.) удалит зашифрованный блоб, гарантируя, что файл не останется на сервере.

Эквиваленты для MVC / WebForms

  • MVC – Разместите ту же логику внутри обычного действия контроллера и верните JsonResult.
  • WebForms – Реализуйте обработчик .ashx или метод страницы, который выполняет те же шаги: получает Request.Files[0], шифрует, генерирует pre‑signed URL и записывает JSON‑ответ.

Единственное различие — синтаксис маршрутизации; рабочий процесс безопасности остаётся идентичным.


4. Отображение документа через установленный SDK

Оставьте доступ к документу на сервере и принудительно проверяйте авторизацию перед обработкой файла или потока. Точная последовательность рендеринга и инициализации UI зависит от версии; следуйте официальной документации, поставляемой с установленной сборкой, а не копируйте непроверенный глобальный JavaScript API.

Почему это работает для любого .NET‑варианта

  • ASP.NET Core Razor – Инициализация находится в том же представлении, где размещена форма загрузки, поэтому есть одна страница для рассмотрения.
  • MVC – Используйте @section Scripts для внедрения того же фрагмента; контроллер возвращает JSON, который может обработать $.ajax в MVC.
  • WebForms – Зарегистрируйте скрипт с помощью ClientScript.RegisterStartupScript после завершения загрузки, затем вызовите launchViewer тем же способом.

Рендеринг происходит на вашем сервере, и в этом его смысл: браузер получает отрисованные страницы, а не исходный документ, поэтому DWG или PSD открываются на машине, где нет ни AutoCAD, ни Photoshop. Подберите размер сервера соответственно — отсканированный PDF в 300 страниц — это реальная нагрузка, и теперь её обрабатывает ваш уровень.

5. Настройка просмотрщика под ваш портал

Предприятия обычно хотят, чтобы просмотрщик выглядел как часть продукта, в котором он находится, а не как окно в чужой системе. Внешний вид просмотрщика и набор доступных элементов управления настраиваемы, а доступные параметры зависят от установленной сборки.

Берите названия параметров из документации, поставляемой с вашей версией, а не из блога. Поверхности конфигурации просмотрщика именно те, которые переименовываются между релизами, и фрагмент, скопированный из статьи, старой на две версии, не будет работать, выглядя как проблема с лицензией.

Решение, которое стоит принять перед тем, как открывать документацию, — какие элементы управления должен видеть каждый роль. Может ли пользователь печатать, скачивать или только листать документ — это вопрос прав, на который ваше приложение уже знает ответ. Настройте просмотрщик исходя из этого ответа, а не раскрывайте все элементы управления в надежде, что никто не нажмёт.

6. Производительность и масштабируемость — поддержание отзывчивости

Встраивание просмотрщика в портал с высоким трафиком поднимает две практические проблемы: время загрузки и одновременный рендеринг. Doconut App решает обе задачи «из коробки», но вы можете усилить производительность с помощью нескольких .NET‑специфических приёмов.

ПроблемаЧто делать
Задержка первой страницыАвтозагрузка страниц позволяет читателю увидеть первую страницу, пока остальные ещё готовятся. Включите сжатие статических файлов (app.UseResponseCompression()) и кэшируйте клиентские ресурсы.
Повторные просмотры одного файлаЧасто открываемый документ можно отрендерить один раз и обслуживать из кэшированного вывода, вместо повторного рендеринга по каждому запросу. В FAQ рассматривается параметр .DCN, предназначенный именно для этого.
Стоимость рендерингаРендеринг — это работа сервера. Снижение разрешения изображений там, где точность не критична, является самым мощным рычагом, и это изменение конфигурации, а не кода.
ОдновременностьПроверьте настройки таймаутов и AutoClose при нагрузке, изучите примеры веб‑ферм, прежде чем полагать, что достаточно одного узла. Ограничьте частоту запросов к эндпоинту загрузки.

Измеряйте на собственных документах. 5‑МБ PDF‑файл с текстом и 5‑МБ скан того же отчёта ведут себя совершенно по‑разному, и только один из них появляется в синтетическом бенчмарке.

Ключевые выводы

  • Doconut Viewer — это SDK .NET без плагинов, который работает с ASP.NET Core, MVC и WebForms. Ваши пользователи ничего не устанавливают.
  • Он устанавливается в вашей собственной среде и не делает вызовов к серверам Doconut, поэтому документы остаются внутри границы, которую вы уже контролируете.
  • Транспортная безопасность, шифрование в состоянии покоя и сроки хранения задаются вами, поскольку файл никогда не покидает вашу инфраструктуру. Doconut не становится процессором в вашей карте данных.
  • Каталог SDK включает 75 файловых расширений в 18 семействах — PDF, Office, CAD, Visio, Project, email, eBook и изображения, а также DICOM через собственный плагин.
  • Рендеринг происходит на сервере. Это позволяет браузеру открыть DWG и также является пунктом, который нужно учитывать при оценке.
  • Какие элементы управления видит пользователь — печать, загрузка или только постраничный просмотр — должны соответствовать разрешениям, уже предоставленным вашему приложению.
  • Берите имена параметров конфигурации из документации для установленной версии, а не из статей.

Часто задаваемые вопросы

Вопрос 1: Нужно ли устанавливать что‑то на сервер?
О: Да. Doconut Viewer — это SDK .NET, который вы устанавливаете в своё приложение — начните со страницы загрузки и используйте пакет и документацию для выбранной версии. Нет ни размещённого конечного пункта для вызова, ни чего‑то, обслуживаемого через CDN Doconut.

Вопрос 2: Кто удаляет файл после просмотра?
О: Вы. Поскольку документ и любой временный вывод рендеринга находятся в вашей среде, срок хранения — это настройка вашего приложения, а не обещание поставщика. Определите, куда записываются временные файлы и кто их удаляет, прежде чем переходить в продакшн.

Вопрос 3: Могут ли пользователи печатать документ?
О: Печать — это возможность просмотрщика, и её можно предоставить или ограничить для каждого пользователя. Обратите внимание, что контролируемая печать является частью самого просмотрщика — это не один из четырёх лицензированных плагинов, а именно Annotation, Converter, DICOM и Search.

Вопрос 4: Может ли он конвертировать документ в другой формат?
О: Это плагин Converter, лицензируемый отдельно. Просмотр и конвертация — это разные продукты, и стоит чётко понимать, какой из них действительно нужен в вашем рабочем процессе.


Готовы встроить просмотрщик документов без плагинов в ваше .NET приложение? Начните со страницы загрузки Doconut — пробная лицензия бесплатна. А если вам просто нужно открыть один файл сегодня, Doconut.app делает это во вкладке браузера и удаляет его после.