有个老项目需要重构,现在重构了一般,但是需要发布使用。让用户访问新项目,某些功能项跳转到老项目去使用,相当于两套系统同时运行着。但是哪些页面要跳转,如果单个写也很麻烦,MVC有路由机制可以实现。
通过自定义路由,判断某些情况进行跳转
public class CustomerRoute : RouteBase { public override RouteData GetRouteData(HttpContextBase httpContext) { var path = httpContext.Request.Path; if (path.Contains("/DesignChange/") || path.Contains("/Notify") || path.Contains("/DrawingManage/")) { var data = new RouteData(this, new CustomerRouteHandle()); //data.Values.Add("Controller", "Login"); //data.Values.Add("Action", "CheckCode"); return data; } return null;//返回null会继续匹配下面的路由 } public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) { return null; } } public class CustomerRouteHandle : IRouteHandler { public IHttpHandler GetHttpHandler(RequestContext requestContext) { return new CustomerHttpHandler(); } } public class CustomerHttpHandler : IHttpHandler { public bool IsReusable => true; public void ProcessRequest(HttpContext context) { var url = context.Request.Path; url = "http://172.30.10.233/RDM_V1" + url; url = url.Replace("RDM_V1/rdm/", "RDM_V1/"); context.Response.Redirect(url); } }然后在RouteConfig中注册下
routes.Add("MyRoute", new CustomerRoute());这样就可以了。