You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.0 MVC中OnException处理后重定向异常问题

问题原因分析及解决方向

结合你的场景和代码,导致该问题的核心原因大概率是缓存或路由/编译缓存冲突,具体分以下几种情况:

1. 浏览器缓存了异常重定向响应

之前该Action手动抛出异常时,系统返回了302重定向到登录页的响应。部分浏览器会缓存这类GET请求的重定向结果,即使你移除了异常代码,浏览器依然直接读取缓存的重定向规则,导致点击菜单链接时自动跳转到登录页。

修改Action名称后,请求URL发生变化,浏览器无对应缓存,自然会发起新请求,功能恢复正常。

2. ASP.NET MVC输出缓存或服务器端缓存

如果该Action配置了[OutputCache]特性,或者服务器端(如IIS)开启了动态内容缓存,可能缓存了之前异常时的重定向响应结果。即使代码修改,服务器仍返回缓存内容,导致跳登录。

改Action名称后,缓存的匹配键(基于URL/Action名称)改变,缓存失效,请求正常处理。

3. 路由冲突或编译缓存残留

  • 路由冲突:可能存在同名Action在其他控制器中,且该Action仍存在异常,路由规则错误地将请求匹配到了异常Action上。修改名称后,路由匹配正确,指向无异常的目标Action。
  • 编译缓存残留:.NET Framework的编译缓存可能残留了旧的Action代码(未完全重新编译),导致执行的还是带异常的旧逻辑。修改Action名称会触发重新编译,清除旧缓存。

验证与解决方法

  • 清除浏览器缓存:按Ctrl+Shift+Del清除当前网站的缓存和Cookie,再测试原Action链接。
  • 检查输出缓存配置:查看该Action是否有[OutputCache]特性,临时移除或调整缓存策略。
  • 重启应用程序池:在IIS中重启对应应用程序池,清除服务器端编译和缓存。
  • 检查路由规则:确认路由配置中没有将该Action的请求错误导向其他异常Action。

内容的提问来源于stack exchange,提问作者Светослав Пехливанов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 10:48:22