我们正在尝试在c#中构建一个mvc应用程序。我们希望更改路由配置,使其在域URL和控制器名称之间具有uniqueId。uniqueId是动态的,并且基于uniqueId,应用程序将通过弹性数据库服务器连接到相应的数据库。
问题是mvc正在考虑将uniqueId作为控制器。当我搜索时,发现很少有解决方案,其中uniqueId是静态的并且已经定义。请找到错误图片link
的链接例如: 我要构建如下所示的内容,但它不起作用
URL :portal.example.com/{uniqueId}/帐户/登录
RouteConfig :
routes.MapRoute(
name: "Default",
url: "{uniqueId}/{controller}/{action}/{id}",
defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional, uniqueId = UrlParameter.Optional }
);
请帮助我们采用这种方法。还有其他方法可以使它正常工作。预先感谢
编辑:很抱歉,默认情况下使用的是主机名而不是uniqueId。我已编辑为uniqueid
答案 0 :(得分:1)
在RouteConfig.cs
上写下
routes.MapMvcAttributeRoutes();
然后,将此顶部写在您的控制器上。
[Route("your_controller/your_ındex")]
答案 1 :(得分:0)
在路由表中生成的URL是在应用程序启动时。它们将始终保持静态。
一种解决方法是:-
[NonAction]
public static string GetGuid()
{
string myUniqueID = Guid.NewGuid().ToString(); //My Unique ID Logic
return myUniqueID;
}
您可以在整个应用程序中调用它。
答案 2 :(得分:0)
我通过在默认值中添加'uniqueid'来尝试了您的代码,对我来说很好
routes.MapRoute(
name: "Default",
url: "{uniqueId}/{controller}/{action}/{id}",
defaults: new { uniqueId = UrlParameter.Optional, controller = "Account", action = "Login", id = UrlParameter.Optional, hostname = UrlParameter.Optional }
);