以编程方式将URL重写为根应用程序

时间:2014-09-24 16:26:16

标签: asp.net asp.net-mvc rewrite

我正在尝试将所有控制器操作从子MVC应用程序路由到根MVC应用程序。 我的目标是将对Child应用程序中“Account”控制器的所有请求转发到根应用程序。

我尝试使用Context.RewritePath但是我得到了异常:“虚拟路径映射到另一个应用程序,这是不允许的。”

Context.RewritePath("/Account/" + action);

我解决此问题的唯一方法是在我的web.config中定义URL重写规则,但我不喜欢这种方法,因为必须在很多应用程序中进行和维护。

有没有人知道在根应用程序中重写URL的方法?

P.S:我不介意使用MVC路由,如果它允许我实现这个结果。

BRGDS

1 个答案:

答案 0 :(得分:0)

  

当然可以,但我尝试将Child应用程序设置为重定向到父应用程序。

我认为最简单的方法是做一些事情(这里有一堆假设):

  

http://www.myapplicationc.com/childapp/controller/action/1

public class RedirectController : Controller
{
  public ActionResult ToParentApplication()
  {
     var destination = Request.Url.AbsoluteUri.Replace("/childapp", string.Empty);
     return Redirect(destination);
  }
}

然后您可以根据需要模块化添加路线:

routes.MapRoute(
  "Redirect1",
  "Account/{*pathInfo}",
  new { controller = "Redirect", action = "ToParentApplication" }
);

或者全能:

routes.MapRoute(
  "Catch All",
  "{*pathInfo}",
  new { controller = "Redirect", action = "ToParentApplication" }
);