我希望有人可以解释如何解决我遇到的ReturnUrl问题。我有一个ASP.NET MVC 4 Web应用程序,我在默认网站下运行,一切看起来都很好...... ReturnUrl指向Basic控制器上的Search操作:
http://localhost/Login/Index?ReturnUrl=%2fBasic%2fSearch
如果我将此应用程序移动到另一台计算机并将其部署在虚拟目录中,我会得到一个不同的ReturnUrl:
http://localhost2/virtualdirectory/Login/Index?ReturnUrl=%2fvirtualdirectory%2fBasic%2fSearch
现在“虚拟目录”显示在ReturnUrl中,当然它没有正确路由。
在我的web.config中,我配置了以下内容:
<authentication mode="Forms">
<forms loginUrl="~/Login/Index" timeout="2880" />
</authentication>
非常感谢任何帮助或建议。
答案 0 :(得分:1)
这取决于你如何进行重定向。如果你像这样重定向,它应该工作:
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
//... omitted some preliminary validation ...
return Redirect(returnUrl);
}
我们正在使用此设置,它适用于虚拟目录。