C# ASP.NET TempData 可以正常工作,但现在它不在 3 台计算机中的 2 台上



我正在开发一个在VS Community 2017中开发的.net Core MVVC项目,并使用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(工作正常。 有人有什么想法吗?

首先仔细看看你的问题

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

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();之后。我不知道为什么它只影响我的一台计算机,但它解决了这个问题。

最新更新