【问题标题】:MVC3 destroying session on redirecttoactionMVC3在redirecttoaction上销毁会话
【发布时间】:2012-01-25 14:14:21
【问题描述】:

我在 MVC3 应用程序中遇到了会话问题。在一个控制器中,我收到一个发布请求,然后将值添加到会话中,然后重定向到控制器的 get 方法。

问题是在 GET 请求中会话值返回 null,即使在 POST 请求中设置了会话值。

[HttpPost]
public ActionResult findPerson(PersonSearch searchDetails)
{
    Session["FindPersons"] = searchDetails;
    return RedirectToAction("findperson");
}


[HttpGet]
public ActionResult findperson()
{
    PersonSearch searchDetails = (PersonSearch)Session["FindPersons"];

【问题讨论】:

    标签: asp.net-mvc-3 session


    【解决方案1】:

    解决方案:

    一些疯子将 web.config 中的会话状态 cookie 名称与身份验证表单名称相同。

    <sessionState timeout="20" cookieName="Spacer" />
    
    <forms loginUrl="/spacer/login" name="Spacer" timeout="2200" />
    

    显然它的效果是试图将会话和 cookie 存储在同一个东西中。我很惊讶这只是没有爆炸。

    感谢您的帮助 @dknaack,如果您没有为我指明正确的方向,我不会这么快发现这一点。

    【讨论】:

      【解决方案2】:

      我尝试了您的代码,但没有在这个问题中运行。所以我查看了 ASP.NET 论坛。

      有一个帖子 RedirectToAction 在 IIS 中丢失会话

      我刚刚遇到了这个问题。它与重定向到操作本身无关,但与应用程序池无关。为我解决的问题是删除站点在 IIS 中运行的应用程序池并重新创建它。现在工作正常。 Source

      【讨论】:

      • 啊,可能是这样,我没有注意到它正在运行 IIS。我现在就试一试。
      • @aspect 如果有帮助请告诉我。
      • 它仍然是 null,我在 Visual Studio 中使用 IIS 进行调试,这是因为代码中有一个经典的 asp 应用程序。
      • @aspect 你的意思是,“因为有一个经典的 asp 应用程序作为代码的一部分”?
      • 该应用程序分为两部分,一个运行在一个应用程序上的经典 asp 应用程序和一个运行在另一个应用程序上的 .net MVC3 应用程序。出于测试目的,我需要通过 IIS 运行代码。
      猜你喜欢
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      • 2012-05-25
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多