如何在 SignalR 中访问 MVC 路由数据



我可以通过以下代码轻松访问 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 }
);

您可以将分段集合用于路由值的每个部分。