2012-01-25 118 views
3

我有一个MVC3应用程序中的会话问题。在一个控制器中,我收到一个post请求,然后在重定向到控制器get方法之前将该值添加到会话中。MVC3销毁会话重定向

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

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


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

回答

4

解决方案:

一些疯子命名在web.config和认证形式的会话状态cookie的名称来命名同样的事情。

<sessionState timeout="20" cookieName="Spacer" /> 

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

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

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

1

我尝试了你的代码,不要在这个问题上运行。所以我看了一下ASP.NET论坛。

有一个帖子RedirectToAction在IIS

我刚刚碰到这个问题失去会话。它不涉及重定向到操作本身,但应用程序池。为我修复的是在IIS中删除网站运行的应用程序池并重新创建它。现在工作正常。 Source

+0

啊,这可能是,我没有注意到它运行IIS。我现在就试一试。 –

+0

@aspect请让我知道它是否有帮助。 – dknaack

+0

它仍然通过为空,我在使用IIS的Visual Studio中调试,这是因为有一个经典的asp应用程序作为代码的一部分。 –