安装
将 Doconut 添加到您的 .NET 6 项目
适用于 .NET 6 的基础 Doconut 查看器以单个 NuGet 包的形式提供,可集成到任何 ASP.NET Core 应用程序中。可选插件使用独立的包。本页将安装基础包并注册中间件——这是首次渲染前的最低要求。
安装包
dotnet add package Doconut.NET6未指定版本的命令会安装最新的稳定版。若要精确复现当前的 26.7.0 版本,请单独传入版本号选项:
dotnet add package Doconut.NET6 --version 26.7.0Doconut.NET6 是包的标识。.26.7.0 后缀属于下载的 Doconut.NET6.26.7.0.nupkg 文件名,并非标识的一部分。
升级前识别集成方式
Doconut.NET6 包标识同时被经典和当前的 .NET 6 集成使用。不要仅凭包名来选择文档:
DocImage.axd、new Viewer(_cache, _accessor, ...)、同步的OpenDocument(...),以及手动复制的查看器脚本标识了经典集成;AddDoconut()、UseDoconutResources()、注入的Viewer,以及OpenDocumentAsync(...)标识了此处记录的当前集成。
已翻译的经典设置手册仍可使用。请参考迁移指南进行代际切换;普通的包更新不会自动转换启动配置、查看器生命周期或浏览器资源。
注册 Doconut
AddDoconut() 是唯一的注册入口点——它只有一个重载,并将 Viewer 服务、许可证服务以及渲染基础设施注入到 DI 容器中。
两次中间件调用完成设置,且顺序很重要:UseDoconutResources() 必须在 UseDoconut() 之前运行。UseDoconut() 为终止中间件,若先调用它,则对 /doconut-res 资源的所有请求都无法到达资源处理程序并返回 404。还需要进行会话绑定——Doconut 的默认文档安全会对每个页面请求进行 ASP.NET 会话状态验证。
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
});
builder.Services.AddDistributedMemoryCache(); // 会话状态需要缓存(MVC/Razor Pages 已经添加了一个)
builder.Services.AddSession(); // Doconut 文档安全依赖于 ASP.NET 会话状态
app.UseSession(); // 在调用 UseDoconut() 之前先调用 UseSession()
app.UseDoconutResources(); // 必须在 UseDoconut() 之前注册
app.UseDoconut();所有选项
DoconutOptions 接受以下可设置的属性。每个属性都是可选的——未设置时将使用下列默认值。
| 属性 | 默认值 | 描述 |
|---|---|---|
ShowDoconutInfo | false | 当设置为 true 时,未携带 token 的请求会返回版本横幅而不是 404。可用于快速检查;生产环境请关闭。 |
UnsafeMode | false | 当设置为 true 时,跳过页面请求的 ASP.NET 会话安全检查。生产环境请关闭。 |
MiddlewarePath | "/doconut" | 页面-图像端点的协调路径。虽然会进行验证,但本身不会挂载分支;请保持与实际的 UseDoconut() 映射以及客户端 BasePath 一致。 |
ResourcesPath | "/doconut-res" | 嵌入的 JS/CSS/图片资源的提供路径。 |
LicensePath | "" (空字符串) | 许可证文件的路径。为空表示会继续查找下一个来源,然后自动搜索。 |
LicenseContent | "" (空字符串) | 原始许可证内容——可来源于环境变量、密钥管理器或数据库。 |
LicenseStream | null | 许可证流,仅在启动时读取一次。 |
ResetLicense | false | 保留的兼容性标志。当前 .NET 6 服务在 AddDoconut() 时读取许可证;更换许可证后请重启应用。 |
当设置了多个来源时的许可证优先级:LicenseStream 优先于 LicenseContent,后者优先于 LicensePath,再后者优先于自动搜索——参见许可证设置。
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
options.MiddlewarePath = "/doconut"; // 与应用映射和客户端 BasePath 协调
options.ResourcesPath = "/doconut-res"; // 查看器的 JS/CSS/图片的提供路径
options.UnsafeMode = false; // 保持会话安全开启
options.ShowDoconutInfo = false;
});后续步骤
此页面对您有帮助吗?