当应用程序作为站点下的虚拟目录托管时,ASP.NET MVC ReturnUrl混淆

时间:2013-02-14 02:37:39

标签: c# asp.net-mvc-4 web-config forms-authentication returnurl

我希望有人可以解释如何解决我遇到的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>

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:1)

这取决于你如何进行重定向。如果你像这样重定向,它应该工作:

[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
   //... omitted some preliminary validation ...
   return Redirect(returnUrl);
}

我们正在使用此设置,它适用于虚拟目录。