使用OutputCaching缓存Blazor站点出现组件记录列表无效错误如何修复
问题根因
该报错是Blazor Server预渲染生成的组件描述符校验令牌默认5分钟有效期导致的:你设置的12小时页面缓存时长远超过该阈值,缓存过期前用户访问页面时,页面携带的已过期组件描述符无法通过服务端校验,就会触发该错误,所有Blazor组件停止交互。
解决方案
1. 直接修改组件描述符超时时间
.NET 6及以上版本支持全局调整该超时阈值,直接匹配你的输出缓存时长即可,在服务注册处添加如下配置:
builder.Services.AddServerSideBlazor(options => { // 将组件描述符有效期调整为12小时,和页面缓存时长保持一致 options.ComponentDescriptorsExpiration = TimeSpan.FromHours(12); });
2. 无需修改全局配置的规避方案
如果不想调整全局的校验时效,也可以通过拆分缓存范围解决冲突:
- 放弃全页缓存,只对页面内不包含Blazor组件的静态区域使用片段缓存,用
<cache>标签包裹静态内容,Blazor组件渲染区域保持动态生成 - 若必须使用全页缓存,可关闭对应页面的Blazor预渲染功能,页面加载时Blazor组件实时渲染生成有效的组件描述符,不会和缓存的静态内容产生冲突
内容的提问来源于stack exchange,提问作者Arn Vanhoutte
相关产品推荐
相关产品推荐

