我已经开发了 2 年的产品,由我们自己和合作伙伴销售。现在经理想将源代码提供给我们的合作伙伴,这些源代码将仅用作具有演示许可证的演示应用程序。
所有的演示模块都已经开发好了,但是当许可证这样说时,我需要在路线(url)上显示“演示”。
例子:
每次来电
/控制器1/动作1
必须将 URL 转换为
/Demo/Controller1/Action1
第一次尝试:
routes.MapRoute(
name: "DefaultDemo",
url: "Demo/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
但是,这将部分起作用,因为我需要在每次调用我的应用程序中的 Controller/Action 时设置“Demo”。
第二次尝试:
routes.MapRoute(
name: "DefaultDemo",
url: "{demo}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { demo = "Demo" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, demo = "Demo" }
);
在这一个中,我尝试将其设置为变量,并将“Demo”设置为该变量的约束,以防止有人将其更改为其他文本。
然后我尝试使用“默认”路由作为重定向到另一个路由,通过设置参数“演示”,但这显然失败了,因为它不能以这种方式工作。
第三次尝试:
var demoRoute = routes.MapRoute(
name: "DefaultDemo",
url: "{demo}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { demo = "Demo" }
);
routes.Redirect(x =>
x.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional, demo = "Demo" })
)
.To(demoRoute);
在最后一个示例中,我尝试使用 RouteMagic nugget 将旧的“默认”路由重定向到演示路由,但它不起作用。
有人做过类似的事情吗?