是的——您可以在几分钟内将安全、无插件的在线文件查看器嵌入任何 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 Core、MVC 5 还是 WebForms,准备步骤都是相同的:
-
添加 Doconut 脚本包
Doconut 在其 CDN 上托管轻量级查看器脚本。将以下代码行添加到布局页(例如_Layout.cshtml或Site.Master):<script src="https://doconut.app/viewer.min.js"></script> -
创建占位元素
查看器会向您指定的<div>中注入 canvas。Razor 示例:<div id="docViewer" style="width:100%; height:800px;"></div>对于 WebForms,放置一个带有
runat="server"的<asp:Panel>,并将ID设置为docViewer。 -
引用 Doconut CSS(可选)
若想使用默认工具栏和主题,请引入 CSS 文件:<link rel="stylesheet" href="https://doconut.app/viewer.min.css" />
这就是您需要的全部静态资源。其余工作将在服务器端代码(上传、加密、令牌生成)以及一段极小的客户端初始化脚本中完成。
3. 构建安全上传端点——AES‑256、SSL 与自动删除
查看器永不直接访问您文件系统中的文件。相反,您需要将文档上传到 临时的加密存储位置,由 Doconut 按需读取。以下是针对 ASP.NET Core 的高级步骤描述,MVC 与 WebForms 同样适用。
服务器端工作流
- 接受上传的文件 – 使用标准的
IFormFile(WebForms 中为HttpPostedFile)接收客户端提交的文档。 - 使用 AES‑256 加密文件 – 在持久化流之前,使用
System.Security.Cryptography.Aes等成熟库进行加密。将加密后的二进制块存放在安全位置(如启用服务器端加密的 Azure Blob Storage,或使用 SSE‑AES256 的 S3 桶)。 - 生成短期签名 URL – 创建一个仅在几分钟内有效(例如 5 分钟)的 HTTPS URL,并在其中加入 Doconut 能验证的加密令牌。大多数云存储提供“预签名 URL”功能,可直接满足此需求。
- 将签名 URL 返回给客户端 – 发送包含该 URL 的 JSON 响应,客户端随后将其交给 Doconut 查看器。
- 安排自动删除 – 在签名 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 标签。 |
| 事件钩子 | 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 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 以及其他数十种格式。