2

我已经开发了 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 将旧的“默认”路由重定向到演示路由,但它不起作用。

有人做过类似的事情吗?

4

0 回答 0