7/10/2026

如何在 ASP.NET 中嵌入无插件文档查看器

面向需要将 Doconut App 的安全、零插件文档查看器嵌入 ASP.NET Core、MVC 或 WebForms 项目的 .NET 工程师的分步指南。

是的——您可以在几分钟内将安全、无插件的在线文件查看器嵌入任何 ASP.NET Core、MVC 或 WebForms 应用程序,且 Doconut App 完成所有繁重工作。
提供合同、图纸或设计资产的企业需要一种既遵守企业安全策略、在所有浏览器上都能工作,又永不强制用户安装第三方插件的查看器。Doconut App 正好满足这些需求:基于浏览器的查看器支持 PDF、Office、CAD 以及 50 多种其他格式,具备 AES‑256 加密、仅限 SSL 的上传以及可完全自定义的 UI。本文将带您完整了解工作流——从安全的文件上传到渲染查看器——帮助您在不从头编写渲染引擎的情况下交付精致的企业级解决方案。


1. 为什么安全性和零插件渲染对 .NET Web 应用程序重要

现代企业将每个文档视为潜在的数据泄漏风险。当您嵌入依赖 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 CoreMVC 5 还是 WebForms,准备步骤都是相同的:

  1. 添加 Doconut 脚本包
    Doconut 在其 CDN 上托管轻量级查看器脚本。将以下代码行添加到布局页(例如 _Layout.cshtmlSite.Master):

    <script src="https://doconut.app/viewer.min.js"></script>
    
  2. 创建占位元素
    查看器会向您指定的 <div> 中注入 canvas。Razor 示例:

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

    对于 WebForms,放置一个带有 runat="server"<asp:Panel>,并将 ID 设置为 docViewer

  3. 引用 Doconut CSS(可选)
    若想使用默认工具栏和主题,请引入 CSS 文件:

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

这就是您需要的全部静态资源。其余工作将在服务器端代码(上传、加密、令牌生成)以及一段极小的客户端初始化脚本中完成。


3. 构建安全上传端点——AES‑256、SSL 与自动删除

查看器永不直接访问您文件系统中的文件。相反,您需要将文档上传到 临时的加密存储位置,由 Doconut 按需读取。以下是针对 ASP.NET Core 的高级步骤描述,MVC 与 WebForms 同样适用。

服务器端工作流

  1. 接受上传的文件 – 使用标准的 IFormFile(WebForms 中为 HttpPostedFile)接收客户端提交的文档。
  2. 使用 AES‑256 加密文件 – 在持久化流之前,使用 System.Security.Cryptography.Aes 等成熟库进行加密。将加密后的二进制块存放在安全位置(如启用服务器端加密的 Azure Blob Storage,或使用 SSE‑AES256 的 S3 桶)。
  3. 生成短期签名 URL – 创建一个仅在几分钟内有效(例如 5 分钟)的 HTTPS URL,并在其中加入 Doconut 能验证的加密令牌。大多数云存储提供“预签名 URL”功能,可直接满足此需求。
  4. 将签名 URL 返回给客户端 – 发送包含该 URL 的 JSON 响应,客户端随后将其交给 Doconut 查看器。
  5. 安排自动删除 – 在签名 URL 失效后,使用后台任务(Hangfire、Azure Functions 等)删除加密文件,确保文件不在服务器上长期保留。

MVC / WebForms 等价实现

  • MVC – 将相同逻辑放入普通控制器动作中,并返回 JsonResult
  • WebForms – 实现 .ashx 处理程序或页面方法,遵循相同步骤:接收 Request.Files[0]、加密、生成预签名 URL,并写入 JSON 响应。

唯一的区别在于路由语法,安全工作流保持一致。


4. 渲染 Doconut 查看器——从 URL 到浏览器 Canvas

客户端收到签名 URL 后,只需一次 JavaScript 调用即可启动查看器。Doconut 的 SDK 会自动处理流式传输、渲染以及 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 可由 MVC 的 $.ajax 读取。
  • WebForms – 在上传完成后通过 ClientScript.RegisterStartupScript 注册脚本,然后同样调用 launchViewer

由于 Doconut 直接从签名 URL 流式读取文档,上传步骤之后服务器再也不会触碰该文件。查看器能够渲染 PDF、Word、CAD 图纸以及产品说明中列出的所有其他格式——无需任何额外的服务器端转换


5. 定制查看器以匹配品牌——微调在线文件查看器

企业常常需要查看器看起来像门户的原生组件。Doconut App 的 完全可定制 UI 让您可以:

定制项在 .NET 中的实现方式
工具栏布局传入 toolbar: false,自行构建调用查看器 JavaScript API(如 zoomIn()print())的按钮。
配色方案设置 theme: "dark",或提供自定义 CSS 文件覆盖默认类。
语言与可访问性Doconut 会读取容器的 lang 属性;您也可以通过 accessibility 选项注入 ARIA 标签。
事件钩子onPageChangeonErroronDownload 等回调可将使用统计记录到您现有的遥测管道中。

所有这些钩子都在前面示例的同一 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 Web 层进行大幅扩容的情况下,支撑数千个并发查看器实例。


关键要点

  • Doconut App 提供 无插件、100 % 安全 的查看器,兼容 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 包的形式从 Doconut CDN 提供。服务器端只需常规的 ASP.NET Core 中间件来处理文件上传和加密,这些通常已经在项目中使用。

问2:Doconut 如何确保文件在查看后被删除?
答:Doconut 会生成一个短期有效的签名 URL,默认有效期约五分钟。URL 失效后,您(或后台清理任务)需要删除加密的 Blob。这样即可保证文档不会被长期保留,满足严格的数据保留政策。

问3:我可以使用查看器进行打印或导出吗?
答:可以。Doconut 的内置工具栏提供打印和导出功能,能够保持源文件的原始质量和布局。

准备好在您的 .NET 应用中嵌入安全、零插件的文档查看器了吗?立即使用 Doconut App,安全、即时地交付 PDF、Office、CAD 以及其他数十种格式。