К
7/10/2026

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

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

Да — вы можете встроить безопасный, безплагинный онлайн‑просмотрщик файлов в любое приложение ASP.NET Core, MVC или WebForms за считанные минуты, и Doconut App выполнит всю тяжелую работу.
Предприятия, которые обслуживают контракты, чертежи или дизайнерские ресурсы, нуждаются в просмотрщике, который соблюдает корпоративные политики безопасности, работает во всех браузерах и никогда не заставляет пользователей устанавливать сторонние плагины. Doconut App предоставляет именно это: браузерный просмотрщик, поддерживающий PDF, Office, CAD и более 50 форматов, с шифрованием AES‑256, загрузкой только по SSL и полностью настраиваемым интерфейсом. В этой статье мы пройдем весь процесс — от защиты загрузки файла до отображения в просмотрщике — чтобы вы могли выпустить полировочное корпоративное решение без написания собственного движка рендеринга.


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

Современные компании рассматривают каждый документ как потенциальный источник утечки данных. Когда вы внедряете просмотрщик, зависящий от ActiveX, Flash или нативного клиента, вы наследуете три риска:

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

Поскольку просмотрщик поставляется как JavaScript‑компонент, который взаимодействует с безопасным сервисом рендеринга Doconut, ваш .NET‑стек остаётся чистым — без дополнительных нативных библиотек, сторонних бинарных файлов и дополнительных аудитов соответствия.


2. Подготовка проекта .NET — минимальная настройка для ASP.NET Core, MVC и WebForms

Независимо от того, используете ли вы ASP.NET Core, MVC 5 или WebForms, шаги подготовки одинаковы:

  1. Добавьте пакет скриптов Doconut
    Doconut размещает лёгкий скрипт просмотрщика на своей CDN. Добавьте следующую строку в страницу макета (например, _Layout.cshtml или Site.Master):

    <script src="https://doconut.app/viewer.min.js"></script>
    
  2. Создайте элемент‑заполнитель
    Просмотрщик вставляет canvas в любой <div>, который вы укажете. Пример для Razor:

    <div id="docViewer" style="width:100%; height:800px;"></div>
    

    Для WebForms разместите <asp:Panel> с runat="server" и задайте ID="docViewer".

  3. Подключите CSS Doconut (по желанию)
    Если хотите использовать стандартную панель инструментов и тему, подключите CSS‑файл:

    <link rel="stylesheet" href="https://doconut.app/viewer.min.css" />
    

Это всё, что нужно добавить статически. Остальная работа происходит в серверном коде (загрузка, шифрование, генерация токена) и небольшом клиентском скрипте инициализации.


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

Просмотрщик никогда не обращается к файлам напрямую на вашей файловой системе. Вместо этого вы загружаете документ во временное зашифрованное хранилище, откуда Doconut читает его по запросу. Ниже — высокоуровневое описание необходимых шагов для ASP.NET Core; те же идеи применимы к MVC и 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], шифрует, генерирует подписанный URL и пишет JSON‑ответ.

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


4. Отображение просмотрщика Doconut — от URL к canvas в браузере

После того как клиент получит подписанный URL, просмотрщик можно запустить одной JavaScript‑командой. SDK Doconut автоматически обрабатывает потоковую передачу, рендеринг и взаимодействие UI.

<script>
    // Предположим, что `response.viewerUrl` содержит подписанный URL, полученный от эндпоинта загрузки
    function launchViewer(viewerUrl) {
        // Инициализируем просмотрщик Doconut. Глобальный объект, предоставляемый скриптом, — `DoconutViewer`.
        DoconutViewer.init({
            containerId: "docViewer",   // <div>, который мы разместили ранее
            fileUrl: viewerUrl,          // Подписанный HTTPS‑URL к зашифрованному файлу
            toolbar: true,               // Показать встроенную панель инструментов
            theme: "light"              // Опциональная визуальная тема
        });
    }

    // Пример: после успешной загрузки
    fetch("/api/document/upload", {
        method: "POST",
        body: myFormData,
        credentials: "include"
    })
    .then(r => r.json())
    .then(data => launchViewer(data.viewerUrl));
</script>

Почему это работает во всех вариантах .NET

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

Поскольку Doconut потоково передаёт документ напрямую из подписанного URL, сервер больше не взаимодействует с файлом после шага загрузки. Просмотрщик рендерит PDF, Word, CAD и все остальные форматы, перечисленные в характеристиках продукта, без какой‑либо дополнительной серверной конвертации.


5. Настройка просмотрщика под ваш бренд — тонкая настройка онлайн‑просмотрщика файлов

Предприятия часто требуют, чтобы просмотрщик выглядел как часть их портала. UI Doconut App полностью настраиваемый и позволяет:

НастройкаКак применить в .NET
Макет панели инструментовПередайте toolbar: false и создайте собственные кнопки, вызывающие JavaScript‑API просмотрщика (например, zoomIn(), print()).
Цветовая схемаУстановите theme: "dark" или подключите собственный CSS, переопределяющий стандартные классы.
Язык и доступностьDoconut учитывает атрибут lang у контейнера; также можно добавить ARIA‑метки через опцию accessibility.
Обработчики событийКолбэки onPageChange, onError, onDownload позволяют записывать метрики использования в вашу существующую систему телеметрии.

Все эти параметры задаются в том же объекте JavaScript, который был показан в предыдущем разделе. Поскольку просмотрщик полностью работает на клиенте, дополнительной нагрузки на сервер нет — ваш .NET‑бэкенд остаётся сфокусированным на аутентификации, шифровании и бизнес‑логике.


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

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

ВопросВстроенное преимущество DoconutДополнительный совет для .NET
Начальная загрузкаСкрипт просмотрщика весит ~150 KB в gzip.Включите сжатие статических файлов (app.UseResponseCompression()) и кеширование (Cache‑Control: public, max‑age=31536000).
Потоковая передача файловDoconut передаёт только нужные страницы, используя HTTP‑range запросы.Храните зашифрованные блобы в региональном CDN (Azure Front Door, Amazon CloudFront) для снижения задержек.
Одновременные пользователиРендеринг происходит на клиенте; сервер обслуживает зашифрованный файл лишь один раз за просмотр.Ограничьте скорость запросов к эндпоинту загрузки через IApplicationRateLimiter, чтобы защититься от всплесков.
Потребление памятиНет серверных библиотек конвертации PDF, поэтому процесс ASP.NET остаётся лёгким.Выделите сервис загрузки в отдельный микросервис, если уже используете очередь фоновых задач.

Соблюдая эти рекомендации, вы сможете поддерживать тысячи одновременных просмотров без необходимости масштабировать .NET‑слой за пределы текущих возможностей.


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

  • Doconut App предоставляет безплагинный, полностью безопасный просмотрщик, работающий с ASP.NET Core, MVC и WebForms.
  • Загрузки происходят только по SSL, хранятся с шифрованием AES‑256 и автоматически удаляются после истечения срока действия подписанного URL.
  • Интеграция требует лишь CDN‑скрипт, контейнер <div> и небольшого серверного эндпоинта, возвращающего подписанный URL.
  • Просмотрщик поддерживает PDF, Office, CAD и более 50 форматов изображений — без серверных конвертаций.
  • UI можно полностью кастомизировать под фирменный стиль, а просмотрщик уже включает инструменты масштабирования, измерения и слоёв для CAD‑файлов.
  • Производительность обрабатывается на клиенте; .NET‑разработчикам остаётся обеспечить сжатие статических файлов и, при необходимости, кеширование через CDN.
  • Весь процесс — от безопасной загрузки до рендеринга в браузере — органично вписывается в существующие .NET‑потоки аутентификации и авторизации.

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

В1: Нужно ли устанавливать какие‑либо NuGet‑пакеты для работы с Doconut?
О: Нет. Просмотрщик поставляется как клиентский JavaScript‑бандл с CDN Doconut. На сервере требуются лишь обычные middleware ASP.NET Core для загрузки файлов и шифрования, которые, скорее всего, уже присутствуют в вашем проекте.

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

В3: Можно ли печатать или экспортировать документ из просмотрщика?
О: Да. Встроенная панель инструментов Doconut включает функции печати и экспорта, сохраняющие оригинальное качество и макет исходного файла.


Готовы встроить безопасный, безплагинный просмотрщик документов в ваше .NET‑приложение? Начните работу с Doconut App уже сегодня и предоставляйте PDF, Office, CAD и десятки других форматов мгновенно и надёжно.