我可以通过以下代码轻松访问 C# MVC 控制器中的 RouteData-Object:
string idKeyName = "id";
if (RouteData.Values.ContainsKey(idKeyName))
{
string hash = RouteData.Values[idKeyName].ToString();
}
但是,如何在 SignalR-Hub 中执行此操作,而无需直接访问 MVC-RouteData-Object?
我自己找到了一个解决方案:
HttpContext.Current.Request.UrlReferrer.Segments.Last();
这实际上不是一个路由数据对象,但它包含我需要的路由的每个部分。
这要求引用站点的路由是这样的(这是 MVC 的默认路由(:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
您可以将分段集合用于路由值的每个部分。