我有一个持久的连接,我想从一些种子信息开始使用查询参数.这是连接中的覆盖.
protected override Task OnConnected(IRequest request,string connectionId) { //GET QUERY PARAMS HERE return base.OnConnected(request,connectionId); }
现在我的global.asax文件中的路由设置看起来像这样.
RouteTable.Routes.MapConnection(“myconnection”,
@H_404_10@
“/myconnection”);客户端代码看起来像这样
var connection = $.connection('/myconnection'); connection.start() .done(() => { });有人可以告诉我如何将查询字符串参数传递给这个连接,所以我可以在覆盖中读取它们,因为我似乎正在打砖墙.
欢呼希望有人可以帮忙,
戴夫
解决方法
花鼓
var connection = $.connection('/myconnection'); $.connection.hub.qs = "name=John"; //pass your query string
并在服务器上得到它
var myQS = Context.QueryString["name"];
要访问javascript中的查询字符串,您可以使用类似的东西
function getQueryStringValueByKey(key) { var url = window.location.href; var values = url.split(/[\?&]+/); for (i = 0; i < values.length; i++) { var value = values[i].split("="); if (value[0] == key) { return value[1]; } } }
叫它:
var name = getQueryStringValueByKey("name");
持续连接
//pass your query string var connection = $.connection('/myconnection',"name=John",true); protected override Task OnConnected(IRequest request,string connectionId) { //get the name here var name = request.QueryString["name"]; return base.OnConnected(request,connectionId); }
这里是您可以找到更多的源代码:https://github.com/SignalR/SignalR/blob/master/src/Microsoft.AspNet.SignalR.Client.JS/jquery.signalR.core.js#L106