TempData在IIS服务器失效但本地正常的问题求助
IIS 10 下 TempData/Session 提示信息不显示的解决办法
本地运行时,控制器通过TempData存储提示信息后重定向到Index视图能正常显示,但发布到IIS 10.0服务器后提示信息消失,替换为Session也无效,可按以下步骤排查解决:
检查Web.config会话配置
确保web.config中sessionState模式未禁用,单服务器部署推荐用InProc模式,配置示例:<system.web> <sessionState mode="InProc" timeout="20" /> </system.web>若使用StateServer或SQLServer模式,需确认对应服务已启动且配置正确。
确认视图读取逻辑正确
检查Index视图是否正确读取并展示TempData内容,示例代码:@if (TempData["AlertMessage"] != null) { <div class="alert alert-danger">@TempData["AlertMessage"]</div> // 若需要保留TempData供后续请求使用,可添加: // TempData.Keep("AlertMessage"); }注意TempData默认读取一次后就会被清除,若需持久化可使用
Keep或Peek方法。检查IIS站点会话状态设置
打开IIS管理器,找到目标站点,双击【会话状态】选项:- 确认【会话状态模式】未设为【禁用】
- 若用进程内模式,保持默认配置即可;若用其他模式,需匹配web.config中的设置。
验证重定向逻辑执行情况
可在LoadFile方法的重定向代码前添加日志输出,或通过浏览器开发者工具查看网络请求,确认是否成功触发了Index页面的重定向。排查Cookie有效性
TempData和Session依赖ASP.NET_SessionId Cookie,需确保:- IIS未禁用Cookie
- 站点的域名、端口配置未导致Cookie无法正常写入浏览器
- 在浏览器开发者工具的【Application】标签下,检查是否存在ASP.NET_SessionId Cookie。
内容的提问来源于stack exchange,提问作者Harmont
相关产品推荐
相关产品推荐

