Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.net MVC3当用户从站点导航时保存最后一个操作,当用户返回时重定向到该操作_Asp.net_Asp.net Mvc 3_Session - Fatal编程技术网

ASP.net MVC3当用户从站点导航时保存最后一个操作,当用户返回时重定向到该操作

ASP.net MVC3当用户从站点导航时保存最后一个操作,当用户返回时重定向到该操作,asp.net,asp.net-mvc-3,session,Asp.net,Asp.net Mvc 3,Session,基本上,我拥有的是一个使用Windows Live Connect进行身份验证的网站。当用户选择从主视图登录时,他们将被重定向到明显托管在其他位置的WL登录页面。一旦他们成功登录,他们将被重定向到我的站点上的登录操作,如果用户是第一次访问,则该操作可能会将用户添加到我的数据库中,并设置会话变量等 但现在的问题是,我总是让登录操作将重定向操作返回到主主页。这可能会让用户感到恼火,因为他们现在必须导航回需要登录才能查看的页面 我的第一个想法是在我的重要操作中添加以下内容以保存用户的当前位置: Ses

基本上,我拥有的是一个使用Windows Live Connect进行身份验证的网站。当用户选择从主视图登录时,他们将被重定向到明显托管在其他位置的WL登录页面。一旦他们成功登录,他们将被重定向到我的站点上的登录操作,如果用户是第一次访问,则该操作可能会将用户添加到我的数据库中,并设置会话变量等

但现在的问题是,我总是让登录操作将重定向操作返回到主主页。这可能会让用户感到恼火,因为他们现在必须导航回需要登录才能查看的页面

我的第一个想法是在我的重要操作中添加以下内容以保存用户的当前位置:

Session["LastPage"] = RedirectToAction("Index", "Home");
然后在我的签名行动结束时,我试图包括:

if (Session["LastPage"] != null)
    return (ActionResult)Session["LastPage"];
else
    return RedirectToAction("MyPage", "User");
但这实际上并不起作用,因为很明显,每次用户离开或返回站点时,我的会话都会重新启动


我处理这个问题的方法正确吗?如果是这样,如何防止会话被擦除?如果我这样做完全是错误的,那么有人能给我指出正确的方向吗?

您可以在指向实时身份验证站点的重定向链接中提供一个额外的查询字符串

只需添加以下查询字符串:

&redirect\u uri=YOURURL


您可以通过请求获取以前的URL。URLreferer

提供的重定向uri必须与您在win live应用程序设置中注册为重定向uri的内容相匹配。因此,该值必须始终相同。另外,不管怎样,它都需要重定向到我的登录操作,因为这会注册用户。我只想从我的登录操作重定向到最后一页。在这种情况下,会话方法就是最好的选择。但是我现在发现你使用的会话是错误的。你不能只是在会话中设置重定向操作。这就是为什么当用户返回时会得到null。您必须将路径放入会话中,然后才能获取路径。无论如何,当我离开站点时,我的会话将被销毁,当我返回时,将创建一个新会话。这就是它为空的原因。除非会话超时非常小,否则不应该发生这种情况。这可能是2800_或-do-it-right_2900.aspx的原因