【问题标题】:C# ASP.NET TempData was working but now it isn't on 2 of 3 computersC# ASP.NET TempData 正在工作,但现在它不在 3 台计算机中的 2 台上
【发布时间】:2025-11-26 06:00:01
【问题描述】:

我正在开发 VS Community 2017 中开发的 .net Core MVVC 项目并使用 IIS Express 10,但我遇到了 TempData 无法在我开发的 3 台计算机中的两台上运行的问题。在某一时刻,它确实对所有三个都有效。

我使用 TempData 在重定向期间存储信息,然后将 TempData 传输到 ViewData 以显示在 View 页面上。我遇到了一些问题(我不记得现在是什么了)并且正在从一位同事那里获得帮助,在他进行故障排除期间,弹出一个框并说了一些关于 SSL 的内容,我不记得他点击了什么,但从那时起TempData 停止工作。我认为他所做的与我不同的一件事是在调试区域的顶部,他单击了 IIS Express 下拉菜单并选择了项目名称选项。 TempData 现在在重定向后显示为 null。当我在家用计算机上打开项目时,TempData 可以正常工作。我有第三台计算机,我在上面进行了一些开发,它曾经可以在该计算机上工作,直到 SSL 框也出现在该计算机上并且它停止工作。我猜它正在重定向到我想要的页面,但它在途中的某个地方进站并且数据丢失了。

我尝试卸载并重新安装 VS 和 IIS Express,但没有任何变化。我还尝试删除解决方案中的 .vs 文件夹而不做任何更改。我尝试在命令提示符下使用 IIS Express 命令清除网站。我还在 Chrome(它曾经工作的地方)和 Internet Explorer 中尝试过,没有任何变化。我试过在调试和不调试的情况下运行它。

因此,TempData 不再适用于两台计算机(如果重要的话,都是 Windows 10),而我的家用计算机 (Windows 7) 运行良好。有人有想法么?

【问题讨论】:

  • 尝试使用诸如 fiddler 之类的代理来查看来自浏览器的请求。它可能有助于诊断问题
  • 关于 ssl 的框说了什么?
  • 您能解释一下“重定向后临时数据现在显示为空”中的重定向吗?据我了解, tempdata 仅适用于从同一客户端上的同一页面到同一服务器的连续请求。如果您在连续请求期间重定向或不访问临时数据字典,它将丢失。
  • @ste-fu 我使用 Chrome 中的开发人员工具来观察这个过程,它按我的预期工作。从一页到下一页,中间没有任何内容,如果这就是您所指的。
  • @HazardousGlitch:这是有道理的,只有在您的一台工作机器上,它没有被重定向或没有像在其他 2 台非工作计算机上使用的那样使用 ssl。就是这样。

标签: c# asp.net iis-express tempdata


【解决方案1】:

首先仔细看看你的问题

“一位同事在故障排除过程中弹出一个框并说 关于 SSL 的东西,我不记得他点击了什么”

你的同事在开发环境中启用了 ssl,运行项目后你必须信任本地 IIS 证书。

我认为您必须配置 cookie 以使用 SSL,例如 <httpCookies requireSSL="true" /> 或者您可以禁用 SSL 进行开发,一切都会好起来的。

当然,您可以在家里的计算机上检查您的 URL 是否具有 HTTP,而在其他两台计算机中,该 URL 是否以 HTTPS 开头。

另一方面,我建议您比较 web.config 结构。

【讨论】:

  • 我仔细检查并在所有三台具有有效证书的计算机上启用了 SSL。我没有要编辑的 web.config 文件。在 Project -> [projectname] -> Debug 中,Enable SSL 也被选中。
【解决方案2】:

我终于在https://github.com/aspnet/Mvc/issues/8233找到了答案

为了解决这个问题,我修改了我的Startup.cs file,以便将app.UseCookiePolicy(); 放在app.UseMvc(); 之后。我不知道为什么它只影响我的一台计算机,但它解决了这个问题。

【讨论】:

    最近更新 更多