从上下文中获取操作/控制器名称
本文关键字:控制器 操作 上下文 获取 | 更新日期: 2023-09-27 18:24:28
我能在SignalR集线器中获得当前操作/控制器名称吗?就像在使用HttpContext
的常见MVC控制器中一样?
目前我正在使用:
if (HttpContext.Current != null)
return HttpContext.Current.Request.RawUrl;
但这只会返回以下内容:
http://localhost:5226/signalr/connect?transport=webSockets&客户端协议=1.5&connectionToken=&connectionData=。。。名称xhub。。。名称yhub&tid=1
此外,CCD_ 2似乎没有进一步的信息。
有人有主意吗?
我刚刚发现我可以使用SignalR的Hub管道:
public class LoggingPipelineModule : HubPipelineModule
{
protected override bool OnBeforeIncoming(IHubIncomingInvokerContext context)
{
Debug.WriteLine("Invoking '{0}.{1}({2})'.",
context.MethodDescriptor.Hub.Name,
context.MethodDescriptor.Name,
string.Join(", ", context.Args));
return base.OnBeforeIncoming(context);
}
}
这样我就可以将Action/Controller设置为全局对象,并在以后进行访问。这当然不是最优的。
您可以尝试从RouteData对象获取值
var controller = HttpContext.Request.RequestContext.RouteData.Values["controller"].ToString();
var action = HttpContext.Request.RequestContext.RouteData.Values["action"].ToString();
希望这能帮助