我允许每个客户选择自己的URL,方法是将自己的自定义代码作为此类域(https://www.[mydomain].com/customercode)之后的第一个网段烘烤到URL中,然后从该URL中了解他们的身份。通过了解谁正在使用MVC路由和会话,这可以很好地工作。问题在于,一旦客户使用其自定义URL开始会话,则URL会更改,并且他们将不再在URL中看到其名称。也就是说,他们以https://www.[mydomain].com/customercode的身份开始会话,然后在第一次重定向后将URL更改为https://www.[mydomain].com/account/login。
我是否可以保留URL的该客户信息段并将其视为“基本url”的一部分?
过去,我编写了诸如CustomActionLink和CustomAction函数之类的扩展来覆盖标准的url呈现,但这意味着我需要在我的整个网站上使用这些函数。我想知道我是否操纵或规定了网站提供的每个网址,以便客户名称始终显示在其网址栏中。
作为参考,这是我的路由代码
// https://scheduler.[theservicedomain].com/TheCustomersName
routes.MapRoute(
name: "Scheduler",
url: "{practiceRouteCode}",
defaults: new { controller = "Scheduler", action = "Index" }
);
// https://scheduler.theservicedomain].com/scheduler/selectservice
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Scheduler", action = "Index" },
namespaces: new[] { "Scheduler.Controllers" }
);
//https://scheduler.theservicedomain].com/TheCustomersName/scheduler/selectdate
routes.MapRoute(
name: "VanityURL",
url: "{practiceRouteCode}/{controller}/{action}",
defaults: new { controller = "Scheduler", action = "Index" },
namespaces: new[] { "Scheduler.Controllers" }
);
始终要求客户从第一条或第三条路线开始会话,然后我们知道他们是谁。但是到目前为止,客户信息(practiceRouteCode)已删除,会话的其余部分位于第二条(默认)路由上。