Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# signalR asp.net设置用户名和连接ID_C#_Asp.net_Signalr_Signalr Hub_Signalr.client - Fatal编程技术网

C# signalR asp.net设置用户名和连接ID

C# signalR asp.net设置用户名和连接ID,c#,asp.net,signalr,signalr-hub,signalr.client,C#,Asp.net,Signalr,Signalr Hub,Signalr.client,我是新来的信号员(和JQuery:D)。。。。。我想设置一些用户名并将其映射到connectionId。。。在检查了一些示例后,这是我的代码。它怎么会不起作用。。。。。页面正在运行,但div id=“msg”保持不变 现在我只想在客户端页面上写下用户名和连接ID的列表 服务器 namespace SERVXZ { class UserConn { public string Usrname { set; get; } public string C

我是新来的信号员(和JQuery:D)。。。。。我想设置一些用户名并将其映射到connectionId。。。在检查了一些示例后,这是我的代码。它怎么会不起作用。。。。。页面正在运行,但div id=“msg”保持不变

现在我只想在客户端页面上写下用户名和连接ID的列表

服务器

namespace SERVXZ
{
    class UserConn
    {
        public string Usrname { set; get; }
        public string ConnectionID { set; get; }
    }

    public class XZHUB : Hub
    {
        //public static ConcurrentDictionary<string, string> MyUsers = new ConcurrentDictionary<string, string>();
        List<UserConn> ulist = new List<UserConn>();
        public override Task OnConnected()
        {
            var us = new UserConn();
            us.Usrname = Context.QueryString["username"];
            us.ConnectionID = Context.ConnectionId;
            ulist.Add(us);

           // var username = Context.QueryString["username"];
           // MyUsers.TryAdd(Context.ConnectionId,username);


            return base.OnConnected();
        }

        public void Send()
        {
            Clients.All.broadcastMessage(ulist[0]);

        }
    }
}
namespace SERVXZ
{
类UserConn
{
公共字符串Usrname{set;get;}
公共字符串连接ID{set;get;}
}
公共类XZUB:Hub
{
//公共静态ConcurrentDictionary MyUsers=新ConcurrentDictionary();
List ulist=新列表();
已连接的公用覆盖任务()
{
var us=new UserConn();
us.Usrname=Context.QueryString[“用户名”];
us.ConnectionID=Context.ConnectionID;
ulist.Add(美国);
//var username=Context.QueryString[“username”];
//MyUsers.TryAdd(Context.ConnectionId,用户名);
返回base.OnConnected();
}
公共无效发送()
{
Clients.All.broadcastMessage(ulist[0]);
}
}
}
客户

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Main.aspx.cs" Inherits="SERVXZ.Main" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Label ID="USR" runat="server" Text="UserName"></asp:Label>

            <br />
            <asp:Button ID="SUB" runat="server" OnClick="SUB_Click" Text="Submit" />

            <div id="msg">HERE</div>

            <script src="Scripts/jquery-3.1.1.js"></script>

            <script src="Scripts/jquery.signalR-2.2.2.js"></script>

            <script src="/signalr/hubs"></script>

            <script type="text/javascript">

                $(function () {
                    var con = $.connection.XZHUB;
                    $('#msg').text("test");
                    $.connection.hub.qs = { 'username': 'rooz' };

                    con.client.broadcastMessage = function (msg) {
                        var enmsg = $('<dive />').text(msg).html();
                        $('#msg').append('<div>'+enmsg+'</div>');
                    };


                    $.connection.hub.start().done(function () {
                        $('#SUB').click(function () {
                            con.server.send();
                        });
                    });

                });

            </script>

        </div>
    </form>
</body>
</html>


在这里 $(函数(){ var con=$.connection.XZHUB; $('#msg')。文本(“测试”); $.connection.hub.qs={'username':'rooz}; con.client.broadcastMessage=函数(msg){ var enmsg=$('').text(msg.html(); $('#msg')。追加(''+enmsg+''); }; $.connection.hub.start().done(函数(){ $('#SUB')。单击(函数(){ con.server.send(); }); }); });

提前感谢………:)

问题在于中心名称。如果不设置集线器名称,将使用名称
xZHUB
生成集线器名称

所以你可以做两件事:

使用默认名称:

var con = $.connection.xZHUB;
或者更改中心名称

[HubName("XZHUB")]
public class XZHUB : Hub
您还需要检查其他事项:

集线器不是静态的,因此将在每次调用中重新创建
ulist
。你应该考虑使它静止或改变逻辑。

“SUB”按钮将生成一个post,因此无法工作。我用一个普通按钮替换了它:

<button ID="SUB">Submit</button>
提交

问题在于集线器名称。如果不设置集线器名称,将使用名称
xZHUB
生成集线器名称

所以你可以做两件事:

使用默认名称:

var con = $.connection.xZHUB;
或者更改中心名称

[HubName("XZHUB")]
public class XZHUB : Hub
您还需要检查其他事项:

集线器不是静态的,因此将在每次调用中重新创建
ulist
。你应该考虑使它静止或改变逻辑。

“SUB”按钮将生成一个post,因此无法工作。我用一个普通按钮替换了它:

<button ID="SUB">Submit</button>
提交

能否在浏览器中打开开发人员工具?我打赌您会遇到一些javascript错误。我还建议您向中心添加一个中心名称,类似于
[HubName(“XZUB”)]
uncaughtTypeError:无法读取HTMLDocument中未定义的属性“client”。(Main.aspx:35)在mighthrow(jquery-3.1.1.js:3570)在process(jquery-3.1.1.js:3638)这是来自开发人员工具的错误…:|您是否将
/signal/hubs
添加为javascript源代码?能否在浏览器中打开开发人员工具?我打赌您会遇到一些javascript错误。我还建议您向中心添加一个中心名称,类似于
[HubName(“XZUB”)]
uncaughtTypeError:无法读取HTMLDocument中未定义的属性“client”。(Main.aspx:35)在mighthrow(jquery-3.1.1.js:3570)在process(jquery-3.1.1.js:3638)这是开发人员工具的错误…:|您是否将
/signalr/hubs
添加为javascript源代码?