C# ASP.NET TempData 正在运行,但现在它不在 3 台计算机中的 2 台上

C# ASP.NET TempData was working but now it isn't on 2 of 3 computers

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

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

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

因此,TempData 不再适用于两台计算机(Windows 10,如果重要的话),而我的家用计算机 (Windows 7) 工作正常。谁有想法?

仔细看你的问题,首先

"a co-worker and during his troubleshooting a box popped up and said something about SSL and I don't remember what he clicked"

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

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

您肯定可以检查您的 URL 家用计算机是否具有 HTTP,而在其他两台计算机中 URL 以 HTTPS 开头。

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

我终于在 https://github.com/aspnet/Mvc/issues/8233

找到了答案

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