C# Microsoft.AspNet.signar:获取未捕获的类型错误:对象#<;对象>;没有方法';登录';

C# Microsoft.AspNet.signar:获取未捕获的类型错误:对象#<;对象>;没有方法';登录';,c#,asp.net-mvc-3,signalr,C#,Asp.net Mvc 3,Signalr,我是新加入SignalR的,我正在尝试使用SignalR和ASP.NET MVC 3开发简单的聊天应用程序。我已经做了以下参考编码 <div id="info" class="round"> <h1> SignalR Chat</h1> <form id="startform"> Enter your name:

我是新加入SignalR的,我正在尝试使用SignalR和ASP.NET MVC 3开发简单的聊天应用程序。我已经做了以下参考编码

        <div id="info" class="round">
            <h1>
                SignalR Chat</h1>
            <form id="startform">
             Enter your name:
            <input type="text" id="name" />
            <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
            </form>
            <div id="login_error" style="margin-top: 100px;" class="error">
            </div>
        </div>

        <div id="chat">
            <div style="height: 50px;">
                <div>SignalRChat</div>
                <div id="logout">
                    <a href="" id="btn_logout">Logout</a>
                </div>
            </div>
            <div class="users-box right round2">
                <strong>Users in chat:</strong>
                <ul id="users">
                </ul>
            </div>
            <div class="chat-box round2">
                <div id="messages">
                    <ul id="message-list">
                    </ul>
                </div>
                <form id="chatform">
                <table width="100%">
                    <tr>
                        <td>
                            <input type="text" id="msg" />
                        </td>
                        <td align="right" width="100px">
                            <input type="button" id="btn_send" class="button" value="Send" />
                        </td>
                    </tr>
                </table>
                </form>
            </div>
        </div>
    </div>
</div>


 <!--Add script to update the page and send messages.--> 
<script type="text/javascript">
    $(function () {
         var onlineUsers = null;
        var userList = [];
        var chat = $.connection.chatHub;

        var getUsers = function () {
            chat.server.getUsers().done(function (users) {
                onlineUsers = users;
                updateUserList();
            });
        };

        var updateUserList = function () {
            $('#users li').remove();
            userList = [];

            $.each(onlineUsers, function () {
                var listItem = $('<li>{0}</li>'.format(this.Name));
                $('#users').append(listItem);

                userList[this.Name] = User(this.Name, listItem);
            });
        };

        var send = function () {
            if ($('#msg').val() !== '') {
                chat.server.Send($('#msg').val());
                $("#msg").val('');
            }
        };

        var login = function () {
            if ($('#name').val() !== '') {
                clientName = $('#name').val();

                chat.server.Logon(clientName, function () {
                    $("#info").toggle();
                    $("#chat").toggle();
                    $('#msg').focus();
                    getUsers();
                }).fail(function (e) {
                    $('#login_error').html(e);
                });
            }
        };

        var logout = function () {
            chat.server.Logout();
        }

        // Callbacks from server
        chat.client.message = function (user, msg, time) {
            $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
            $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
        };

        chat.client.loggedOn = function (user, time) {
            $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
            getUsers();
        };

        chat.client.loggedOff = function (user, time) {
            $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
            getUsers();
        };

        chat.client.userTyping = function (user) {
            userList[user].typing();
        };

        // Form events
        $("#btn_send").click(function () { send(); $('#msg').focus(); });
        $("#btn_login").click(function () { login(); });
        $("#btn_logout").click(function () { logout(); });
        $('#chatform').submit(function () { send(); return false; });
        $('#startform').submit(function () { login(); return false; });


        // Logout when user closes browser
        window.onbeforeunload = function () { chat.server.Logout(); };

        // Start chat
        $.connection.hub.start().done(function () {
            alert("Connected");
        });

        $("#chat").toggle();
        $('#name').focus();

    });

</script>
聊天中心

public class ChatHub : Hub
{
    private static readonly Dictionary<string, ChatUser> _users 
        = new Dictionary<string, ChatUser>(StringComparer.OrdinalIgnoreCase);

    public Task Send(string message)
    {
        var user = _users.Values.FirstOrDefault(u => u.ClientId == Context.ConnectionId);

        if (user == null)
        {
            throw new Exception("User is not logged in");
        }

         return Clients.All.message(user.Name, message, TimeStamp());
    }

    public void Logon(string clientName)
    {
        if (clientName.Length > 10)
        {
            throw new Exception("I prefer short names.");
        }

        if (_users.Any(x => x.Key == clientName))
        {
            throw new Exception("User name is already taken, please select a different one.");
        }

        _users.Add(clientName, new ChatUser { ClientId = Context.ConnectionId, Name = clientName });

        Clients.Caller.name = clientName;

        Clients.All.loggedOn(clientName, TimeStamp());
    }

    public Task Logout()
    {
        var user = _users.Values.FirstOrDefault(u => u.ClientId == Context.ConnectionId);

        if (user != null)
        {
            _users.Remove(user.Name);
           return  Clients.All.loggedOff(user.Name, TimeStamp());
        }

        return null;
    }



    public IEnumerable<ChatUser> GetUsers()
    {
        return _users.Values.OrderBy(x => x.Name);
    }

    private static string TimeStamp()
    {
        return DateTime.Now.ToShortTimeString();
    }
}
        <div id="info" class="round">
            <h1>
                SignalR Chat</h1>
            <form id="startform">
             Enter your name:
            <input type="text" id="name" />
            <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
            </form>
            <div id="login_error" style="margin-top: 100px;" class="error">
            </div>
        </div>

        <div id="chat">
            <div style="height: 50px;">
                <div>SignalRChat</div>
                <div id="logout">
                    <a href="" id="btn_logout">Logout</a>
                </div>
            </div>
            <div class="users-box right round2">
                <strong>Users in chat:</strong>
                <ul id="users">
                </ul>
            </div>
            <div class="chat-box round2">
                <div id="messages">
                    <ul id="message-list">
                    </ul>
                </div>
                <form id="chatform">
                <table width="100%">
                    <tr>
                        <td>
                            <input type="text" id="msg" />
                        </td>
                        <td align="right" width="100px">
                            <input type="button" id="btn_send" class="button" value="Send" />
                        </td>
                    </tr>
                </table>
                </form>
            </div>
        </div>
    </div>
</div>


 <!--Add script to update the page and send messages.--> 
<script type="text/javascript">
    $(function () {
         var onlineUsers = null;
        var userList = [];
        var chat = $.connection.chatHub;

        var getUsers = function () {
            chat.server.getUsers().done(function (users) {
                onlineUsers = users;
                updateUserList();
            });
        };

        var updateUserList = function () {
            $('#users li').remove();
            userList = [];

            $.each(onlineUsers, function () {
                var listItem = $('<li>{0}</li>'.format(this.Name));
                $('#users').append(listItem);

                userList[this.Name] = User(this.Name, listItem);
            });
        };

        var send = function () {
            if ($('#msg').val() !== '') {
                chat.server.Send($('#msg').val());
                $("#msg").val('');
            }
        };

        var login = function () {
            if ($('#name').val() !== '') {
                clientName = $('#name').val();

                chat.server.Logon(clientName, function () {
                    $("#info").toggle();
                    $("#chat").toggle();
                    $('#msg').focus();
                    getUsers();
                }).fail(function (e) {
                    $('#login_error').html(e);
                });
            }
        };

        var logout = function () {
            chat.server.Logout();
        }

        // Callbacks from server
        chat.client.message = function (user, msg, time) {
            $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
            $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
        };

        chat.client.loggedOn = function (user, time) {
            $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
            getUsers();
        };

        chat.client.loggedOff = function (user, time) {
            $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
            getUsers();
        };

        chat.client.userTyping = function (user) {
            userList[user].typing();
        };

        // Form events
        $("#btn_send").click(function () { send(); $('#msg').focus(); });
        $("#btn_login").click(function () { login(); });
        $("#btn_logout").click(function () { logout(); });
        $('#chatform').submit(function () { send(); return false; });
        $('#startform').submit(function () { login(); return false; });


        // Logout when user closes browser
        window.onbeforeunload = function () { chat.server.Logout(); };

        // Start chat
        $.connection.hub.start().done(function () {
            alert("Connected");
        });

        $("#chat").toggle();
        $('#name').focus();

    });

</script>
IndexView.chtml

        <div id="info" class="round">
            <h1>
                SignalR Chat</h1>
            <form id="startform">
             Enter your name:
            <input type="text" id="name" />
            <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
            </form>
            <div id="login_error" style="margin-top: 100px;" class="error">
            </div>
        </div>

        <div id="chat">
            <div style="height: 50px;">
                <div>SignalRChat</div>
                <div id="logout">
                    <a href="" id="btn_logout">Logout</a>
                </div>
            </div>
            <div class="users-box right round2">
                <strong>Users in chat:</strong>
                <ul id="users">
                </ul>
            </div>
            <div class="chat-box round2">
                <div id="messages">
                    <ul id="message-list">
                    </ul>
                </div>
                <form id="chatform">
                <table width="100%">
                    <tr>
                        <td>
                            <input type="text" id="msg" />
                        </td>
                        <td align="right" width="100px">
                            <input type="button" id="btn_send" class="button" value="Send" />
                        </td>
                    </tr>
                </table>
                </form>
            </div>
        </div>
    </div>
</div>


 <!--Add script to update the page and send messages.--> 
<script type="text/javascript">
    $(function () {
         var onlineUsers = null;
        var userList = [];
        var chat = $.connection.chatHub;

        var getUsers = function () {
            chat.server.getUsers().done(function (users) {
                onlineUsers = users;
                updateUserList();
            });
        };

        var updateUserList = function () {
            $('#users li').remove();
            userList = [];

            $.each(onlineUsers, function () {
                var listItem = $('<li>{0}</li>'.format(this.Name));
                $('#users').append(listItem);

                userList[this.Name] = User(this.Name, listItem);
            });
        };

        var send = function () {
            if ($('#msg').val() !== '') {
                chat.server.Send($('#msg').val());
                $("#msg").val('');
            }
        };

        var login = function () {
            if ($('#name').val() !== '') {
                clientName = $('#name').val();

                chat.server.Logon(clientName, function () {
                    $("#info").toggle();
                    $("#chat").toggle();
                    $('#msg').focus();
                    getUsers();
                }).fail(function (e) {
                    $('#login_error').html(e);
                });
            }
        };

        var logout = function () {
            chat.server.Logout();
        }

        // Callbacks from server
        chat.client.message = function (user, msg, time) {
            $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
            $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
        };

        chat.client.loggedOn = function (user, time) {
            $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
            getUsers();
        };

        chat.client.loggedOff = function (user, time) {
            $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
            getUsers();
        };

        chat.client.userTyping = function (user) {
            userList[user].typing();
        };

        // Form events
        $("#btn_send").click(function () { send(); $('#msg').focus(); });
        $("#btn_login").click(function () { login(); });
        $("#btn_logout").click(function () { logout(); });
        $('#chatform').submit(function () { send(); return false; });
        $('#startform').submit(function () { login(); return false; });


        // Logout when user closes browser
        window.onbeforeunload = function () { chat.server.Logout(); };

        // Start chat
        $.connection.hub.start().done(function () {
            alert("Connected");
        });

        $("#chat").toggle();
        $('#name').focus();

    });

</script>
信号员聊天

        <div id="info" class="round">
            <h1>
                SignalR Chat</h1>
            <form id="startform">
             Enter your name:
            <input type="text" id="name" />
            <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
            </form>
            <div id="login_error" style="margin-top: 100px;" class="error">
            </div>
        </div>

        <div id="chat">
            <div style="height: 50px;">
                <div>SignalRChat</div>
                <div id="logout">
                    <a href="" id="btn_logout">Logout</a>
                </div>
            </div>
            <div class="users-box right round2">
                <strong>Users in chat:</strong>
                <ul id="users">
                </ul>
            </div>
            <div class="chat-box round2">
                <div id="messages">
                    <ul id="message-list">
                    </ul>
                </div>
                <form id="chatform">
                <table width="100%">
                    <tr>
                        <td>
                            <input type="text" id="msg" />
                        </td>
                        <td align="right" width="100px">
                            <input type="button" id="btn_send" class="button" value="Send" />
                        </td>
                    </tr>
                </table>
                </form>
            </div>
        </div>
    </div>
</div>


 <!--Add script to update the page and send messages.--> 
<script type="text/javascript">
    $(function () {
         var onlineUsers = null;
        var userList = [];
        var chat = $.connection.chatHub;

        var getUsers = function () {
            chat.server.getUsers().done(function (users) {
                onlineUsers = users;
                updateUserList();
            });
        };

        var updateUserList = function () {
            $('#users li').remove();
            userList = [];

            $.each(onlineUsers, function () {
                var listItem = $('<li>{0}</li>'.format(this.Name));
                $('#users').append(listItem);

                userList[this.Name] = User(this.Name, listItem);
            });
        };

        var send = function () {
            if ($('#msg').val() !== '') {
                chat.server.Send($('#msg').val());
                $("#msg").val('');
            }
        };

        var login = function () {
            if ($('#name').val() !== '') {
                clientName = $('#name').val();

                chat.server.Logon(clientName, function () {
                    $("#info").toggle();
                    $("#chat").toggle();
                    $('#msg').focus();
                    getUsers();
                }).fail(function (e) {
                    $('#login_error').html(e);
                });
            }
        };

        var logout = function () {
            chat.server.Logout();
        }

        // Callbacks from server
        chat.client.message = function (user, msg, time) {
            $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
            $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
        };

        chat.client.loggedOn = function (user, time) {
            $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
            getUsers();
        };

        chat.client.loggedOff = function (user, time) {
            $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
            getUsers();
        };

        chat.client.userTyping = function (user) {
            userList[user].typing();
        };

        // Form events
        $("#btn_send").click(function () { send(); $('#msg').focus(); });
        $("#btn_login").click(function () { login(); });
        $("#btn_logout").click(function () { logout(); });
        $('#chatform').submit(function () { send(); return false; });
        $('#startform').submit(function () { login(); return false; });


        // Logout when user closes browser
        window.onbeforeunload = function () { chat.server.Logout(); };

        // Start chat
        $.connection.hub.start().done(function () {
            alert("Connected");
        });

        $("#chat").toggle();
        $('#name').focus();

    });

</script>

信号员聊天
输入您的姓名:
信号灯
聊天室中的用户:
$(函数(){ var onlineUsers=null; var userList=[]; var chat=$.connection.chatHub; var getUsers=函数(){ chat.server.getUsers().done(函数(用户){ 在线用户=用户; updateUserList(); }); }; var updateUserList=函数(){ $('#users li')。删除(); userList=[]; $.each(在线用户,函数(){ var listItem=$('
  • {0}
  • '.format(this.Name)); $(“#用户”).append(列表项); userList[this.Name]=用户(this.Name,listItem); }); }; var send=函数(){ 如果($('#msg').val()!=''){ chat.server.Send($('#msg').val()); $(“#msg”).val(“”); } }; var login=函数(){ if($('#name').val()!=''){ clientName=$('#name').val(); chat.server.Logon(clientName,函数(){ $(“#信息”).toggle(); $(“#聊天”).toggle(); $('#msg').focus(); getUsers(); }).失败(功能(e){ $('login#u error').html(e); }); } }; var logout=函数(){ chat.server.Logout(); } //来自服务器的回调 chat.client.message=函数(用户、消息、时间){ $('#消息列表').append('
  • {0}{1}:{2}
  • '.format(time,user,msg)); $(“#消息”).prop({scrollTop:$(“#消息”).prop(“scrollHeight”)}); }; chat.client.loggedOn=函数(用户、时间){ $(“#消息列表”).append(“
  • {0}{1}已登录。格式(时间,用户)); getUsers(); }; chat.client.loggedOff=函数(用户、时间){ $(“#消息列表”).append(“
  • {0}{1}已注销。格式(时间,用户)); getUsers(); }; chat.client.userTyping=函数(用户){ userList[user]。正在键入(); }; //形成事件 $(“#btn_send”)。单击(函数(){send();$('#msg')。焦点();}); $(“#btn_login”)。单击(函数(){login();}); $(“#btn_注销”)。单击(函数(){logout();}); $('#chatform').submit(函数(){send();return false;}); $('#startform').submit(函数(){login();返回false;}); //当用户关闭浏览器时注销 window.onbeforeunload=函数(){chat.server.Logout();}; //开始聊天 $.connection.hub.start().done(函数(){ 警报(“已连接”); }); $(“#聊天”).toggle(); $('#name').focus(); });
  •         <div id="info" class="round">
                <h1>
                    SignalR Chat</h1>
                <form id="startform">
                 Enter your name:
                <input type="text" id="name" />
                <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
                </form>
                <div id="login_error" style="margin-top: 100px;" class="error">
                </div>
            </div>
    
            <div id="chat">
                <div style="height: 50px;">
                    <div>SignalRChat</div>
                    <div id="logout">
                        <a href="" id="btn_logout">Logout</a>
                    </div>
                </div>
                <div class="users-box right round2">
                    <strong>Users in chat:</strong>
                    <ul id="users">
                    </ul>
                </div>
                <div class="chat-box round2">
                    <div id="messages">
                        <ul id="message-list">
                        </ul>
                    </div>
                    <form id="chatform">
                    <table width="100%">
                        <tr>
                            <td>
                                <input type="text" id="msg" />
                            </td>
                            <td align="right" width="100px">
                                <input type="button" id="btn_send" class="button" value="Send" />
                            </td>
                        </tr>
                    </table>
                    </form>
                </div>
            </div>
        </div>
    </div>
    
    
     <!--Add script to update the page and send messages.--> 
    <script type="text/javascript">
        $(function () {
             var onlineUsers = null;
            var userList = [];
            var chat = $.connection.chatHub;
    
            var getUsers = function () {
                chat.server.getUsers().done(function (users) {
                    onlineUsers = users;
                    updateUserList();
                });
            };
    
            var updateUserList = function () {
                $('#users li').remove();
                userList = [];
    
                $.each(onlineUsers, function () {
                    var listItem = $('<li>{0}</li>'.format(this.Name));
                    $('#users').append(listItem);
    
                    userList[this.Name] = User(this.Name, listItem);
                });
            };
    
            var send = function () {
                if ($('#msg').val() !== '') {
                    chat.server.Send($('#msg').val());
                    $("#msg").val('');
                }
            };
    
            var login = function () {
                if ($('#name').val() !== '') {
                    clientName = $('#name').val();
    
                    chat.server.Logon(clientName, function () {
                        $("#info").toggle();
                        $("#chat").toggle();
                        $('#msg').focus();
                        getUsers();
                    }).fail(function (e) {
                        $('#login_error').html(e);
                    });
                }
            };
    
            var logout = function () {
                chat.server.Logout();
            }
    
            // Callbacks from server
            chat.client.message = function (user, msg, time) {
                $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
                $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
            };
    
            chat.client.loggedOn = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.loggedOff = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.userTyping = function (user) {
                userList[user].typing();
            };
    
            // Form events
            $("#btn_send").click(function () { send(); $('#msg').focus(); });
            $("#btn_login").click(function () { login(); });
            $("#btn_logout").click(function () { logout(); });
            $('#chatform').submit(function () { send(); return false; });
            $('#startform').submit(function () { login(); return false; });
    
    
            // Logout when user closes browser
            window.onbeforeunload = function () { chat.server.Logout(); };
    
            // Start chat
            $.connection.hub.start().done(function () {
                alert("Connected");
            });
    
            $("#chat").toggle();
            $('#name').focus();
    
        });
    
    </script>
    
    但是,当我试图调用
    ChatHub的
    Logon
    方法时,我得到了以下信息:

            <div id="info" class="round">
                <h1>
                    SignalR Chat</h1>
                <form id="startform">
                 Enter your name:
                <input type="text" id="name" />
                <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
                </form>
                <div id="login_error" style="margin-top: 100px;" class="error">
                </div>
            </div>
    
            <div id="chat">
                <div style="height: 50px;">
                    <div>SignalRChat</div>
                    <div id="logout">
                        <a href="" id="btn_logout">Logout</a>
                    </div>
                </div>
                <div class="users-box right round2">
                    <strong>Users in chat:</strong>
                    <ul id="users">
                    </ul>
                </div>
                <div class="chat-box round2">
                    <div id="messages">
                        <ul id="message-list">
                        </ul>
                    </div>
                    <form id="chatform">
                    <table width="100%">
                        <tr>
                            <td>
                                <input type="text" id="msg" />
                            </td>
                            <td align="right" width="100px">
                                <input type="button" id="btn_send" class="button" value="Send" />
                            </td>
                        </tr>
                    </table>
                    </form>
                </div>
            </div>
        </div>
    </div>
    
    
     <!--Add script to update the page and send messages.--> 
    <script type="text/javascript">
        $(function () {
             var onlineUsers = null;
            var userList = [];
            var chat = $.connection.chatHub;
    
            var getUsers = function () {
                chat.server.getUsers().done(function (users) {
                    onlineUsers = users;
                    updateUserList();
                });
            };
    
            var updateUserList = function () {
                $('#users li').remove();
                userList = [];
    
                $.each(onlineUsers, function () {
                    var listItem = $('<li>{0}</li>'.format(this.Name));
                    $('#users').append(listItem);
    
                    userList[this.Name] = User(this.Name, listItem);
                });
            };
    
            var send = function () {
                if ($('#msg').val() !== '') {
                    chat.server.Send($('#msg').val());
                    $("#msg").val('');
                }
            };
    
            var login = function () {
                if ($('#name').val() !== '') {
                    clientName = $('#name').val();
    
                    chat.server.Logon(clientName, function () {
                        $("#info").toggle();
                        $("#chat").toggle();
                        $('#msg').focus();
                        getUsers();
                    }).fail(function (e) {
                        $('#login_error').html(e);
                    });
                }
            };
    
            var logout = function () {
                chat.server.Logout();
            }
    
            // Callbacks from server
            chat.client.message = function (user, msg, time) {
                $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
                $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
            };
    
            chat.client.loggedOn = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.loggedOff = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.userTyping = function (user) {
                userList[user].typing();
            };
    
            // Form events
            $("#btn_send").click(function () { send(); $('#msg').focus(); });
            $("#btn_login").click(function () { login(); });
            $("#btn_logout").click(function () { logout(); });
            $('#chatform').submit(function () { send(); return false; });
            $('#startform').submit(function () { login(); return false; });
    
    
            // Logout when user closes browser
            window.onbeforeunload = function () { chat.server.Logout(); };
    
            // Start chat
            $.connection.hub.start().done(function () {
                alert("Connected");
            });
    
            $("#chat").toggle();
            $('#name').focus();
    
        });
    
    </script>
    
    未捕获的TypeError:对象#没有方法“Logon”

            <div id="info" class="round">
                <h1>
                    SignalR Chat</h1>
                <form id="startform">
                 Enter your name:
                <input type="text" id="name" />
                <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
                </form>
                <div id="login_error" style="margin-top: 100px;" class="error">
                </div>
            </div>
    
            <div id="chat">
                <div style="height: 50px;">
                    <div>SignalRChat</div>
                    <div id="logout">
                        <a href="" id="btn_logout">Logout</a>
                    </div>
                </div>
                <div class="users-box right round2">
                    <strong>Users in chat:</strong>
                    <ul id="users">
                    </ul>
                </div>
                <div class="chat-box round2">
                    <div id="messages">
                        <ul id="message-list">
                        </ul>
                    </div>
                    <form id="chatform">
                    <table width="100%">
                        <tr>
                            <td>
                                <input type="text" id="msg" />
                            </td>
                            <td align="right" width="100px">
                                <input type="button" id="btn_send" class="button" value="Send" />
                            </td>
                        </tr>
                    </table>
                    </form>
                </div>
            </div>
        </div>
    </div>
    
    
     <!--Add script to update the page and send messages.--> 
    <script type="text/javascript">
        $(function () {
             var onlineUsers = null;
            var userList = [];
            var chat = $.connection.chatHub;
    
            var getUsers = function () {
                chat.server.getUsers().done(function (users) {
                    onlineUsers = users;
                    updateUserList();
                });
            };
    
            var updateUserList = function () {
                $('#users li').remove();
                userList = [];
    
                $.each(onlineUsers, function () {
                    var listItem = $('<li>{0}</li>'.format(this.Name));
                    $('#users').append(listItem);
    
                    userList[this.Name] = User(this.Name, listItem);
                });
            };
    
            var send = function () {
                if ($('#msg').val() !== '') {
                    chat.server.Send($('#msg').val());
                    $("#msg").val('');
                }
            };
    
            var login = function () {
                if ($('#name').val() !== '') {
                    clientName = $('#name').val();
    
                    chat.server.Logon(clientName, function () {
                        $("#info").toggle();
                        $("#chat").toggle();
                        $('#msg').focus();
                        getUsers();
                    }).fail(function (e) {
                        $('#login_error').html(e);
                    });
                }
            };
    
            var logout = function () {
                chat.server.Logout();
            }
    
            // Callbacks from server
            chat.client.message = function (user, msg, time) {
                $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
                $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
            };
    
            chat.client.loggedOn = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.loggedOff = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.userTyping = function (user) {
                userList[user].typing();
            };
    
            // Form events
            $("#btn_send").click(function () { send(); $('#msg').focus(); });
            $("#btn_login").click(function () { login(); });
            $("#btn_logout").click(function () { logout(); });
            $('#chatform').submit(function () { send(); return false; });
            $('#startform').submit(function () { login(); return false; });
    
    
            // Logout when user closes browser
            window.onbeforeunload = function () { chat.server.Logout(); };
    
            // Start chat
            $.connection.hub.start().done(function () {
                alert("Connected");
            });
    
            $("#chat").toggle();
            $('#name').focus();
    
        });
    
    </script>
    

    任何人都可以帮助我,我在上面用signar编码时有什么错误。

    当通过JavaScript与signar通信时,除非通过
    HubMethodName
    属性指定,否则服务器方法被引用为驼峰大小写

            <div id="info" class="round">
                <h1>
                    SignalR Chat</h1>
                <form id="startform">
                 Enter your name:
                <input type="text" id="name" />
                <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
                </form>
                <div id="login_error" style="margin-top: 100px;" class="error">
                </div>
            </div>
    
            <div id="chat">
                <div style="height: 50px;">
                    <div>SignalRChat</div>
                    <div id="logout">
                        <a href="" id="btn_logout">Logout</a>
                    </div>
                </div>
                <div class="users-box right round2">
                    <strong>Users in chat:</strong>
                    <ul id="users">
                    </ul>
                </div>
                <div class="chat-box round2">
                    <div id="messages">
                        <ul id="message-list">
                        </ul>
                    </div>
                    <form id="chatform">
                    <table width="100%">
                        <tr>
                            <td>
                                <input type="text" id="msg" />
                            </td>
                            <td align="right" width="100px">
                                <input type="button" id="btn_send" class="button" value="Send" />
                            </td>
                        </tr>
                    </table>
                    </form>
                </div>
            </div>
        </div>
    </div>
    
    
     <!--Add script to update the page and send messages.--> 
    <script type="text/javascript">
        $(function () {
             var onlineUsers = null;
            var userList = [];
            var chat = $.connection.chatHub;
    
            var getUsers = function () {
                chat.server.getUsers().done(function (users) {
                    onlineUsers = users;
                    updateUserList();
                });
            };
    
            var updateUserList = function () {
                $('#users li').remove();
                userList = [];
    
                $.each(onlineUsers, function () {
                    var listItem = $('<li>{0}</li>'.format(this.Name));
                    $('#users').append(listItem);
    
                    userList[this.Name] = User(this.Name, listItem);
                });
            };
    
            var send = function () {
                if ($('#msg').val() !== '') {
                    chat.server.Send($('#msg').val());
                    $("#msg").val('');
                }
            };
    
            var login = function () {
                if ($('#name').val() !== '') {
                    clientName = $('#name').val();
    
                    chat.server.Logon(clientName, function () {
                        $("#info").toggle();
                        $("#chat").toggle();
                        $('#msg').focus();
                        getUsers();
                    }).fail(function (e) {
                        $('#login_error').html(e);
                    });
                }
            };
    
            var logout = function () {
                chat.server.Logout();
            }
    
            // Callbacks from server
            chat.client.message = function (user, msg, time) {
                $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
                $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
            };
    
            chat.client.loggedOn = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.loggedOff = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.userTyping = function (user) {
                userList[user].typing();
            };
    
            // Form events
            $("#btn_send").click(function () { send(); $('#msg').focus(); });
            $("#btn_login").click(function () { login(); });
            $("#btn_logout").click(function () { logout(); });
            $('#chatform').submit(function () { send(); return false; });
            $('#startform').submit(function () { login(); return false; });
    
    
            // Logout when user closes browser
            window.onbeforeunload = function () { chat.server.Logout(); };
    
            // Start chat
            $.connection.hub.start().done(function () {
                alert("Connected");
            });
    
            $("#chat").toggle();
            $('#name').focus();
    
        });
    
    </script>
    
    如果您想继续使用当前代码,可以通过两种方式修复它

            <div id="info" class="round">
                <h1>
                    SignalR Chat</h1>
                <form id="startform">
                 Enter your name:
                <input type="text" id="name" />
                <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
                </form>
                <div id="login_error" style="margin-top: 100px;" class="error">
                </div>
            </div>
    
            <div id="chat">
                <div style="height: 50px;">
                    <div>SignalRChat</div>
                    <div id="logout">
                        <a href="" id="btn_logout">Logout</a>
                    </div>
                </div>
                <div class="users-box right round2">
                    <strong>Users in chat:</strong>
                    <ul id="users">
                    </ul>
                </div>
                <div class="chat-box round2">
                    <div id="messages">
                        <ul id="message-list">
                        </ul>
                    </div>
                    <form id="chatform">
                    <table width="100%">
                        <tr>
                            <td>
                                <input type="text" id="msg" />
                            </td>
                            <td align="right" width="100px">
                                <input type="button" id="btn_send" class="button" value="Send" />
                            </td>
                        </tr>
                    </table>
                    </form>
                </div>
            </div>
        </div>
    </div>
    
    
     <!--Add script to update the page and send messages.--> 
    <script type="text/javascript">
        $(function () {
             var onlineUsers = null;
            var userList = [];
            var chat = $.connection.chatHub;
    
            var getUsers = function () {
                chat.server.getUsers().done(function (users) {
                    onlineUsers = users;
                    updateUserList();
                });
            };
    
            var updateUserList = function () {
                $('#users li').remove();
                userList = [];
    
                $.each(onlineUsers, function () {
                    var listItem = $('<li>{0}</li>'.format(this.Name));
                    $('#users').append(listItem);
    
                    userList[this.Name] = User(this.Name, listItem);
                });
            };
    
            var send = function () {
                if ($('#msg').val() !== '') {
                    chat.server.Send($('#msg').val());
                    $("#msg").val('');
                }
            };
    
            var login = function () {
                if ($('#name').val() !== '') {
                    clientName = $('#name').val();
    
                    chat.server.Logon(clientName, function () {
                        $("#info").toggle();
                        $("#chat").toggle();
                        $('#msg').focus();
                        getUsers();
                    }).fail(function (e) {
                        $('#login_error').html(e);
                    });
                }
            };
    
            var logout = function () {
                chat.server.Logout();
            }
    
            // Callbacks from server
            chat.client.message = function (user, msg, time) {
                $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
                $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
            };
    
            chat.client.loggedOn = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.loggedOff = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.userTyping = function (user) {
                userList[user].typing();
            };
    
            // Form events
            $("#btn_send").click(function () { send(); $('#msg').focus(); });
            $("#btn_login").click(function () { login(); });
            $("#btn_logout").click(function () { logout(); });
            $('#chatform').submit(function () { send(); return false; });
            $('#startform').submit(function () { login(); return false; });
    
    
            // Logout when user closes browser
            window.onbeforeunload = function () { chat.server.Logout(); };
    
            // Start chat
            $.connection.hub.start().done(function () {
                alert("Connected");
            });
    
            $("#chat").toggle();
            $('#name').focus();
    
        });
    
    </script>
    
  • 在服务器端集线器上,在每个集线器上方放置
    [HubMethodName(“foo”)]
    方法使用正确的名称。因此,登录将是:

            <div id="info" class="round">
                <h1>
                    SignalR Chat</h1>
                <form id="startform">
                 Enter your name:
                <input type="text" id="name" />
                <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
                </form>
                <div id="login_error" style="margin-top: 100px;" class="error">
                </div>
            </div>
    
            <div id="chat">
                <div style="height: 50px;">
                    <div>SignalRChat</div>
                    <div id="logout">
                        <a href="" id="btn_logout">Logout</a>
                    </div>
                </div>
                <div class="users-box right round2">
                    <strong>Users in chat:</strong>
                    <ul id="users">
                    </ul>
                </div>
                <div class="chat-box round2">
                    <div id="messages">
                        <ul id="message-list">
                        </ul>
                    </div>
                    <form id="chatform">
                    <table width="100%">
                        <tr>
                            <td>
                                <input type="text" id="msg" />
                            </td>
                            <td align="right" width="100px">
                                <input type="button" id="btn_send" class="button" value="Send" />
                            </td>
                        </tr>
                    </table>
                    </form>
                </div>
            </div>
        </div>
    </div>
    
    
     <!--Add script to update the page and send messages.--> 
    <script type="text/javascript">
        $(function () {
             var onlineUsers = null;
            var userList = [];
            var chat = $.connection.chatHub;
    
            var getUsers = function () {
                chat.server.getUsers().done(function (users) {
                    onlineUsers = users;
                    updateUserList();
                });
            };
    
            var updateUserList = function () {
                $('#users li').remove();
                userList = [];
    
                $.each(onlineUsers, function () {
                    var listItem = $('<li>{0}</li>'.format(this.Name));
                    $('#users').append(listItem);
    
                    userList[this.Name] = User(this.Name, listItem);
                });
            };
    
            var send = function () {
                if ($('#msg').val() !== '') {
                    chat.server.Send($('#msg').val());
                    $("#msg").val('');
                }
            };
    
            var login = function () {
                if ($('#name').val() !== '') {
                    clientName = $('#name').val();
    
                    chat.server.Logon(clientName, function () {
                        $("#info").toggle();
                        $("#chat").toggle();
                        $('#msg').focus();
                        getUsers();
                    }).fail(function (e) {
                        $('#login_error').html(e);
                    });
                }
            };
    
            var logout = function () {
                chat.server.Logout();
            }
    
            // Callbacks from server
            chat.client.message = function (user, msg, time) {
                $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
                $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
            };
    
            chat.client.loggedOn = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.loggedOff = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.userTyping = function (user) {
                userList[user].typing();
            };
    
            // Form events
            $("#btn_send").click(function () { send(); $('#msg').focus(); });
            $("#btn_login").click(function () { login(); });
            $("#btn_logout").click(function () { logout(); });
            $('#chatform').submit(function () { send(); return false; });
            $('#startform').submit(function () { login(); return false; });
    
    
            // Logout when user closes browser
            window.onbeforeunload = function () { chat.server.Logout(); };
    
            // Start chat
            $.connection.hub.start().done(function () {
                alert("Connected");
            });
    
            $("#chat").toggle();
            $('#name').focus();
    
        });
    
    </script>
    
    [HubMethodName(“登录”)]
    公共无效登录(字符串clientName)
    {
    ...
    }

  •         <div id="info" class="round">
                <h1>
                    SignalR Chat</h1>
                <form id="startform">
                 Enter your name:
                <input type="text" id="name" />
                <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
                </form>
                <div id="login_error" style="margin-top: 100px;" class="error">
                </div>
            </div>
    
            <div id="chat">
                <div style="height: 50px;">
                    <div>SignalRChat</div>
                    <div id="logout">
                        <a href="" id="btn_logout">Logout</a>
                    </div>
                </div>
                <div class="users-box right round2">
                    <strong>Users in chat:</strong>
                    <ul id="users">
                    </ul>
                </div>
                <div class="chat-box round2">
                    <div id="messages">
                        <ul id="message-list">
                        </ul>
                    </div>
                    <form id="chatform">
                    <table width="100%">
                        <tr>
                            <td>
                                <input type="text" id="msg" />
                            </td>
                            <td align="right" width="100px">
                                <input type="button" id="btn_send" class="button" value="Send" />
                            </td>
                        </tr>
                    </table>
                    </form>
                </div>
            </div>
        </div>
    </div>
    
    
     <!--Add script to update the page and send messages.--> 
    <script type="text/javascript">
        $(function () {
             var onlineUsers = null;
            var userList = [];
            var chat = $.connection.chatHub;
    
            var getUsers = function () {
                chat.server.getUsers().done(function (users) {
                    onlineUsers = users;
                    updateUserList();
                });
            };
    
            var updateUserList = function () {
                $('#users li').remove();
                userList = [];
    
                $.each(onlineUsers, function () {
                    var listItem = $('<li>{0}</li>'.format(this.Name));
                    $('#users').append(listItem);
    
                    userList[this.Name] = User(this.Name, listItem);
                });
            };
    
            var send = function () {
                if ($('#msg').val() !== '') {
                    chat.server.Send($('#msg').val());
                    $("#msg").val('');
                }
            };
    
            var login = function () {
                if ($('#name').val() !== '') {
                    clientName = $('#name').val();
    
                    chat.server.Logon(clientName, function () {
                        $("#info").toggle();
                        $("#chat").toggle();
                        $('#msg').focus();
                        getUsers();
                    }).fail(function (e) {
                        $('#login_error').html(e);
                    });
                }
            };
    
            var logout = function () {
                chat.server.Logout();
            }
    
            // Callbacks from server
            chat.client.message = function (user, msg, time) {
                $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
                $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
            };
    
            chat.client.loggedOn = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.loggedOff = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.userTyping = function (user) {
                userList[user].typing();
            };
    
            // Form events
            $("#btn_send").click(function () { send(); $('#msg').focus(); });
            $("#btn_login").click(function () { login(); });
            $("#btn_logout").click(function () { logout(); });
            $('#chatform').submit(function () { send(); return false; });
            $('#startform').submit(function () { login(); return false; });
    
    
            // Logout when user closes browser
            window.onbeforeunload = function () { chat.server.Logout(); };
    
            // Start chat
            $.connection.hub.start().done(function () {
                alert("Connected");
            });
    
            $("#chat").toggle();
            $('#name').focus();
    
        });
    
    </script>
    
  • 在JavaScript脚本中,您可以执行以下操作:

            <div id="info" class="round">
                <h1>
                    SignalR Chat</h1>
                <form id="startform">
                 Enter your name:
                <input type="text" id="name" />
                <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
                </form>
                <div id="login_error" style="margin-top: 100px;" class="error">
                </div>
            </div>
    
            <div id="chat">
                <div style="height: 50px;">
                    <div>SignalRChat</div>
                    <div id="logout">
                        <a href="" id="btn_logout">Logout</a>
                    </div>
                </div>
                <div class="users-box right round2">
                    <strong>Users in chat:</strong>
                    <ul id="users">
                    </ul>
                </div>
                <div class="chat-box round2">
                    <div id="messages">
                        <ul id="message-list">
                        </ul>
                    </div>
                    <form id="chatform">
                    <table width="100%">
                        <tr>
                            <td>
                                <input type="text" id="msg" />
                            </td>
                            <td align="right" width="100px">
                                <input type="button" id="btn_send" class="button" value="Send" />
                            </td>
                        </tr>
                    </table>
                    </form>
                </div>
            </div>
        </div>
    </div>
    
    
     <!--Add script to update the page and send messages.--> 
    <script type="text/javascript">
        $(function () {
             var onlineUsers = null;
            var userList = [];
            var chat = $.connection.chatHub;
    
            var getUsers = function () {
                chat.server.getUsers().done(function (users) {
                    onlineUsers = users;
                    updateUserList();
                });
            };
    
            var updateUserList = function () {
                $('#users li').remove();
                userList = [];
    
                $.each(onlineUsers, function () {
                    var listItem = $('<li>{0}</li>'.format(this.Name));
                    $('#users').append(listItem);
    
                    userList[this.Name] = User(this.Name, listItem);
                });
            };
    
            var send = function () {
                if ($('#msg').val() !== '') {
                    chat.server.Send($('#msg').val());
                    $("#msg").val('');
                }
            };
    
            var login = function () {
                if ($('#name').val() !== '') {
                    clientName = $('#name').val();
    
                    chat.server.Logon(clientName, function () {
                        $("#info").toggle();
                        $("#chat").toggle();
                        $('#msg').focus();
                        getUsers();
                    }).fail(function (e) {
                        $('#login_error').html(e);
                    });
                }
            };
    
            var logout = function () {
                chat.server.Logout();
            }
    
            // Callbacks from server
            chat.client.message = function (user, msg, time) {
                $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
                $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
            };
    
            chat.client.loggedOn = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.loggedOff = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.userTyping = function (user) {
                userList[user].typing();
            };
    
            // Form events
            $("#btn_send").click(function () { send(); $('#msg').focus(); });
            $("#btn_login").click(function () { login(); });
            $("#btn_logout").click(function () { logout(); });
            $('#chatform').submit(function () { send(); return false; });
            $('#startform').submit(function () { login(); return false; });
    
    
            // Logout when user closes browser
            window.onbeforeunload = function () { chat.server.Logout(); };
    
            // Start chat
            $.connection.hub.start().done(function () {
                alert("Connected");
            });
    
            $("#chat").toggle();
            $('#name').focus();
    
        });
    
    </script>
    
    chat.server.logon(…)

  •         <div id="info" class="round">
                <h1>
                    SignalR Chat</h1>
                <form id="startform">
                 Enter your name:
                <input type="text" id="name" />
                <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
                </form>
                <div id="login_error" style="margin-top: 100px;" class="error">
                </div>
            </div>
    
            <div id="chat">
                <div style="height: 50px;">
                    <div>SignalRChat</div>
                    <div id="logout">
                        <a href="" id="btn_logout">Logout</a>
                    </div>
                </div>
                <div class="users-box right round2">
                    <strong>Users in chat:</strong>
                    <ul id="users">
                    </ul>
                </div>
                <div class="chat-box round2">
                    <div id="messages">
                        <ul id="message-list">
                        </ul>
                    </div>
                    <form id="chatform">
                    <table width="100%">
                        <tr>
                            <td>
                                <input type="text" id="msg" />
                            </td>
                            <td align="right" width="100px">
                                <input type="button" id="btn_send" class="button" value="Send" />
                            </td>
                        </tr>
                    </table>
                    </form>
                </div>
            </div>
        </div>
    </div>
    
    
     <!--Add script to update the page and send messages.--> 
    <script type="text/javascript">
        $(function () {
             var onlineUsers = null;
            var userList = [];
            var chat = $.connection.chatHub;
    
            var getUsers = function () {
                chat.server.getUsers().done(function (users) {
                    onlineUsers = users;
                    updateUserList();
                });
            };
    
            var updateUserList = function () {
                $('#users li').remove();
                userList = [];
    
                $.each(onlineUsers, function () {
                    var listItem = $('<li>{0}</li>'.format(this.Name));
                    $('#users').append(listItem);
    
                    userList[this.Name] = User(this.Name, listItem);
                });
            };
    
            var send = function () {
                if ($('#msg').val() !== '') {
                    chat.server.Send($('#msg').val());
                    $("#msg").val('');
                }
            };
    
            var login = function () {
                if ($('#name').val() !== '') {
                    clientName = $('#name').val();
    
                    chat.server.Logon(clientName, function () {
                        $("#info").toggle();
                        $("#chat").toggle();
                        $('#msg').focus();
                        getUsers();
                    }).fail(function (e) {
                        $('#login_error').html(e);
                    });
                }
            };
    
            var logout = function () {
                chat.server.Logout();
            }
    
            // Callbacks from server
            chat.client.message = function (user, msg, time) {
                $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
                $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
            };
    
            chat.client.loggedOn = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.loggedOff = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.userTyping = function (user) {
                userList[user].typing();
            };
    
            // Form events
            $("#btn_send").click(function () { send(); $('#msg').focus(); });
            $("#btn_login").click(function () { login(); });
            $("#btn_logout").click(function () { logout(); });
            $('#chatform').submit(function () { send(); return false; });
            $('#startform').submit(function () { login(); return false; });
    
    
            // Logout when user closes browser
            window.onbeforeunload = function () { chat.server.Logout(); };
    
            // Start chat
            $.connection.hub.start().done(function () {
                alert("Connected");
            });
    
            $("#chat").toggle();
            $('#name').focus();
    
        });
    
    </script>
    
    请记住,您必须将其中一种方法应用于所有方法(通过#1)或与服务器的所有通信(通过#2)

            <div id="info" class="round">
                <h1>
                    SignalR Chat</h1>
                <form id="startform">
                 Enter your name:
                <input type="text" id="name" />
                <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
                </form>
                <div id="login_error" style="margin-top: 100px;" class="error">
                </div>
            </div>
    
            <div id="chat">
                <div style="height: 50px;">
                    <div>SignalRChat</div>
                    <div id="logout">
                        <a href="" id="btn_logout">Logout</a>
                    </div>
                </div>
                <div class="users-box right round2">
                    <strong>Users in chat:</strong>
                    <ul id="users">
                    </ul>
                </div>
                <div class="chat-box round2">
                    <div id="messages">
                        <ul id="message-list">
                        </ul>
                    </div>
                    <form id="chatform">
                    <table width="100%">
                        <tr>
                            <td>
                                <input type="text" id="msg" />
                            </td>
                            <td align="right" width="100px">
                                <input type="button" id="btn_send" class="button" value="Send" />
                            </td>
                        </tr>
                    </table>
                    </form>
                </div>
            </div>
        </div>
    </div>
    
    
     <!--Add script to update the page and send messages.--> 
    <script type="text/javascript">
        $(function () {
             var onlineUsers = null;
            var userList = [];
            var chat = $.connection.chatHub;
    
            var getUsers = function () {
                chat.server.getUsers().done(function (users) {
                    onlineUsers = users;
                    updateUserList();
                });
            };
    
            var updateUserList = function () {
                $('#users li').remove();
                userList = [];
    
                $.each(onlineUsers, function () {
                    var listItem = $('<li>{0}</li>'.format(this.Name));
                    $('#users').append(listItem);
    
                    userList[this.Name] = User(this.Name, listItem);
                });
            };
    
            var send = function () {
                if ($('#msg').val() !== '') {
                    chat.server.Send($('#msg').val());
                    $("#msg").val('');
                }
            };
    
            var login = function () {
                if ($('#name').val() !== '') {
                    clientName = $('#name').val();
    
                    chat.server.Logon(clientName, function () {
                        $("#info").toggle();
                        $("#chat").toggle();
                        $('#msg').focus();
                        getUsers();
                    }).fail(function (e) {
                        $('#login_error').html(e);
                    });
                }
            };
    
            var logout = function () {
                chat.server.Logout();
            }
    
            // Callbacks from server
            chat.client.message = function (user, msg, time) {
                $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
                $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
            };
    
            chat.client.loggedOn = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.loggedOff = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.userTyping = function (user) {
                userList[user].typing();
            };
    
            // Form events
            $("#btn_send").click(function () { send(); $('#msg').focus(); });
            $("#btn_login").click(function () { login(); });
            $("#btn_logout").click(function () { logout(); });
            $('#chatform').submit(function () { send(); return false; });
            $('#startform').submit(function () { login(); return false; });
    
    
            // Logout when user closes browser
            window.onbeforeunload = function () { chat.server.Logout(); };
    
            // Start chat
            $.connection.hub.start().done(function () {
                alert("Connected");
            });
    
            $("#chat").toggle();
            $('#name').focus();
    
        });
    
    </script>
    

    希望这有帮助

    我尝试了您的第一个解决方案,但我发现新的错误“Logon”方法无法解决。登录调用失败(函数(e){$('#login_error').html(e);正在执行。发现错误…用于调用登录方法的语法错误..更新了登录方法调用语法,,,,chat.server.Logon(clientName).done(函数(){$(“#info”).toggle();$(“#chat”).toggle();$('#msg').focus();getUsers()).fail(函数(e){$(“#login_error”).html(e);});现在它工作得很好..感谢您的帮助…您的解决方案工作得很好。
            <div id="info" class="round">
                <h1>
                    SignalR Chat</h1>
                <form id="startform">
                 Enter your name:
                <input type="text" id="name" />
                <input type="button" id="btn_login" class="button" style="margin-top: 25px;" value="Start chatting" />
                </form>
                <div id="login_error" style="margin-top: 100px;" class="error">
                </div>
            </div>
    
            <div id="chat">
                <div style="height: 50px;">
                    <div>SignalRChat</div>
                    <div id="logout">
                        <a href="" id="btn_logout">Logout</a>
                    </div>
                </div>
                <div class="users-box right round2">
                    <strong>Users in chat:</strong>
                    <ul id="users">
                    </ul>
                </div>
                <div class="chat-box round2">
                    <div id="messages">
                        <ul id="message-list">
                        </ul>
                    </div>
                    <form id="chatform">
                    <table width="100%">
                        <tr>
                            <td>
                                <input type="text" id="msg" />
                            </td>
                            <td align="right" width="100px">
                                <input type="button" id="btn_send" class="button" value="Send" />
                            </td>
                        </tr>
                    </table>
                    </form>
                </div>
            </div>
        </div>
    </div>
    
    
     <!--Add script to update the page and send messages.--> 
    <script type="text/javascript">
        $(function () {
             var onlineUsers = null;
            var userList = [];
            var chat = $.connection.chatHub;
    
            var getUsers = function () {
                chat.server.getUsers().done(function (users) {
                    onlineUsers = users;
                    updateUserList();
                });
            };
    
            var updateUserList = function () {
                $('#users li').remove();
                userList = [];
    
                $.each(onlineUsers, function () {
                    var listItem = $('<li>{0}</li>'.format(this.Name));
                    $('#users').append(listItem);
    
                    userList[this.Name] = User(this.Name, listItem);
                });
            };
    
            var send = function () {
                if ($('#msg').val() !== '') {
                    chat.server.Send($('#msg').val());
                    $("#msg").val('');
                }
            };
    
            var login = function () {
                if ($('#name').val() !== '') {
                    clientName = $('#name').val();
    
                    chat.server.Logon(clientName, function () {
                        $("#info").toggle();
                        $("#chat").toggle();
                        $('#msg').focus();
                        getUsers();
                    }).fail(function (e) {
                        $('#login_error').html(e);
                    });
                }
            };
    
            var logout = function () {
                chat.server.Logout();
            }
    
            // Callbacks from server
            chat.client.message = function (user, msg, time) {
                $('#message-list').append('<li class="message">{0} {1}: {2}</li>'.format(time, user, msg));
                $("#messages").prop({ scrollTop: $("#messages").prop("scrollHeight") });
            };
    
            chat.client.loggedOn = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged on</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.loggedOff = function (user, time) {
                $('#message-list').append('<li class="info">{0} {1} logged off</li>'.format(time, user));
                getUsers();
            };
    
            chat.client.userTyping = function (user) {
                userList[user].typing();
            };
    
            // Form events
            $("#btn_send").click(function () { send(); $('#msg').focus(); });
            $("#btn_login").click(function () { login(); });
            $("#btn_logout").click(function () { logout(); });
            $('#chatform').submit(function () { send(); return false; });
            $('#startform').submit(function () { login(); return false; });
    
    
            // Logout when user closes browser
            window.onbeforeunload = function () { chat.server.Logout(); };
    
            // Start chat
            $.connection.hub.start().done(function () {
                alert("Connected");
            });
    
            $("#chat").toggle();
            $('#name').focus();
    
        });
    
    </script>