重定向到 .net core 中的查询字符串 url 时会话为空
session being null when redirect to query string url in .net core
我正在设置 url
查询字符串,当任何人点击此类页面时只能在登录后访问。我将该控制器名称设置为查询字符串并重定向到登录页面。到这里为止一切正常。但是当我登录并使用 Response.Redirect(returnUrl);
时,它会将我的会话转换为空。这里 returnurl 变成 /Control/Index
。如果我只是重定向为 return RedirectToAction("Index", "Control");
则它工作正常。
可能是什么问题。
Working Good Redirection - RedirectToAction("Index", "Control");
Not Working Redirection - Response.Redirect("/Control/Index");
你的问题归结为一个问题:
What is the difference between Response.Redirect()
and RedirectToAction()
?
两者都用于将请求从一个页面转移到另一个页面。两者都会给出 302 状态码。两者可以用于相同的目的,但细节决定成败。
Response.Redirect
(以及仅与 URL 一起使用的 Redirect()
)将请求重定向到新的 URL 并指定新的 URL。 RedirectToAction()
终止当前请求的执行并使用指定的操作开始执行新请求 and/or 控制器名称。
RedirectToAction()
保留会话中的旧请求。 Response.Redirect()
没有,因为它超出了它的范围。 RedirectToAction()
留在服务器上执行另一个请求,而 Response.Redirect()
returns 响应然后从头开始处理下一个请求作为一个单独的请求。
那么,RedirectToAction()
更好吗?它并不更好,它只是针对不同的用例。例如,您不能使用 RedirectToAction()
重定向到不同的网站,因为它超出了您本地 Web 应用程序的范围。在将 URL 传递给所需的网站时,您必须使用 Response.Redirect()
。
请参阅 this 文章,更详细地解释差异并说明两种方法的往返行程。请注意,它并不能完全解释您的问题,因为它显示了来自 ASP.NET 网页的 Response.Redirect()
和 Server.Transfer()
之间的差异,但是所呈现的概念非常相似。
我正在设置 url
查询字符串,当任何人点击此类页面时只能在登录后访问。我将该控制器名称设置为查询字符串并重定向到登录页面。到这里为止一切正常。但是当我登录并使用 Response.Redirect(returnUrl);
时,它会将我的会话转换为空。这里 returnurl 变成 /Control/Index
。如果我只是重定向为 return RedirectToAction("Index", "Control");
则它工作正常。
可能是什么问题。
Working Good Redirection - RedirectToAction("Index", "Control");
Not Working Redirection - Response.Redirect("/Control/Index");
你的问题归结为一个问题:
What is the difference between
Response.Redirect()
andRedirectToAction()
?
两者都用于将请求从一个页面转移到另一个页面。两者都会给出 302 状态码。两者可以用于相同的目的,但细节决定成败。
Response.Redirect
(以及仅与 URL 一起使用的 Redirect()
)将请求重定向到新的 URL 并指定新的 URL。 RedirectToAction()
终止当前请求的执行并使用指定的操作开始执行新请求 and/or 控制器名称。
RedirectToAction()
保留会话中的旧请求。 Response.Redirect()
没有,因为它超出了它的范围。 RedirectToAction()
留在服务器上执行另一个请求,而 Response.Redirect()
returns 响应然后从头开始处理下一个请求作为一个单独的请求。
那么,RedirectToAction()
更好吗?它并不更好,它只是针对不同的用例。例如,您不能使用 RedirectToAction()
重定向到不同的网站,因为它超出了您本地 Web 应用程序的范围。在将 URL 传递给所需的网站时,您必须使用 Response.Redirect()
。
请参阅 this 文章,更详细地解释差异并说明两种方法的往返行程。请注意,它并不能完全解释您的问题,因为它显示了来自 ASP.NET 网页的 Response.Redirect()
和 Server.Transfer()
之间的差异,但是所呈现的概念非常相似。