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

本文关键字:ASP NET 混淆 ReturnUrl MVC 应用程序 网站 虚拟 | 更新日期: 2023-09-27 17:59:11

我希望有人能告诉我如何解决我遇到的ReturnUrl问题。我有一个ASP.NET MVC 4 web应用程序,我在默认网站下运行,一切看起来都很好。。。ReturnUrl指向基本控制器上的搜索操作:

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>

如有任何帮助或建议,我们将不胜感激。

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

这取决于重定向的方式。如果你像这样重定向,它应该可以工作:

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

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