如何禁用ASP.NET Core Razor Pages缓存?异常后页面重复加载求助
ASP.NET Core Razor Pages 动态链接重复加载错误内容问题解决
针对你遇到的动态链接首次请求正常,异常后重复加载错误内容的问题,以下是几种实用的解决思路:
禁用页面响应缓存
在对应PageModel类上添加ResponseCache特性,强制禁止服务器和浏览器缓存页面响应:[ResponseCache(NoStore = true, Location = ResponseCacheLocation.None)] public class TargetPageModel : PageModel { public void OnGet(int dynamicId) { // 业务逻辑代码 } }排查业务层缓存逻辑
如果你的OnGet方法中使用了内存缓存(IMemoryCache)或分布式缓存(IDistributedCache),检查是否在异常发生时仍缓存了错误数据。需要在捕获异常时清除对应缓存项,避免后续请求读取旧的错误内容:public async Task OnGetAsync(int dynamicId) { var cacheKey = $"DynamicData_{dynamicId}"; try { var data = await _memoryCache.GetOrCreateAsync(cacheKey, async entry => { entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5); return await _dataService.GetDataAsync(dynamicId); }); ViewData["DynamicData"] = data; } catch { _memoryCache.Remove(cacheKey); throw; } }绕过浏览器缓存
在生成动态链接时添加随机参数(如时间戳),让每次请求的URL唯一,避免浏览器复用缓存的错误响应:<a asp-page="TargetPage" asp-route-dynamicId="@Model.ItemId" asp-route-random="@DateTime.Now.Ticks">查看详情</a>同时在PageModel中接收该参数(无需实际使用):
public void OnGet(int dynamicId, long? random) { // 业务逻辑代码 }检查全局缓存中间件
确认Program.cs中是否启用了app.UseResponseCaching(),若全局缓存策略不符合需求,可移除该中间件,或针对特定页面配置差异化缓存规则。
内容的提问来源于stack exchange,提问作者Narender Kumar
相关产品推荐
相关产品推荐

