• ASP.NET SignalR Troubeshooting


    method could not be resolved

    场景:
    Javascript客户端不生成代理,调用服务端方法。
    按照官网文档的用法:

    contosoChatHubProxy.invoke('newContosoChatMessage', { UserName: userName, Message: message}).done(function () {
        console.log ('Invocation of NewContosoChatMessage succeeded');
    }).fail(function (error) {
        console.log('Invocation of NewContosoChatMessage failed. Error: ' + error);
    });
    

    但是实际调用时,却抛出以下异常:

    'SendMessage' method could not be resolved.
    Potential candidates are: SendMessage(toFinanceId:String, toCustomerName:String, message:String):Task
    

    原因:调用服务端方法时,传递的参数类型不对。
    这里服务端方法定义的是三个参数,而我传递的是包含这三个参数的对象,因此不匹配。

    参考:.NET Client unable to call hub methods with array parameters

    当SignalR连接超过2个时,网站请求被全部阻塞

    前一段时间在网站中利用 SignalR 增加了实时聊天功能,最初的开发过程一切正常,但是自从更换新电脑后,出现一个现象:
    打开网站,第一批请求都完毕后,后续所有的请求都变成 pending 状态,服务器一直没有进行响应。
    查看 IIS 工作进程的当前请求,可以看到有3个 SignalR 的连接,并没有其他正在被处理的请求。

    我尝试在代码中把 SignalR 部分注释掉,然后之前所有被阻塞的请求突然活了过来。

    于是猜测可能是使用 SignalR 不当造成的,但是相同的代码在之前的电脑上则没有该问题。

    这两台电脑的一个不同之处是,旧电脑的 OS 是 Windows 10 Professional,新电脑的 OS 是 Windows 10 Home。

    于是在关键词中新增关键词 Windows 10 Home,再次Google,很快找到了答案:
    不同的 Windows 版本, IIS 有并发连接数限制并且各个版本不同。

    Windows 10 Home : 3
    Windows 10 Professional : 10
    

    需要说明的是,该限制取决于Windows版本而不是IIS版本。

    Windows 版本可以划分为 Client 版本和 Server 版本,Client 版本有限制,如 Windows 7、Windows 8、Windows Vista;但是 Server 版本没有限制,如 Server 2003、Server 2008、Server 2012。

    经过验证, 装有 Windows 10 Professional 电脑的 IIS 并发请求数量不能超过9个。

    总结排错过程:

    1. 排查代码;
    2. 两台电脑的操作系统的区别;

    参考: Windows 8 / IIS 8 Concurrent Requests Limit

  • 相关阅读:
    苹果 macOS 安装 Source Code Pro
    C# 中代码执行 ping 操作
    WPF 中 Path 使用虚线
    查看 Java Web 开发环境软件是 32 位还是 64 位
    linux 磁盘io监控
    Linux下系统如何监控服务器硬件、操作系统、应用服务和业务
    ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
    完全卸载oracle11g步骤
    用JDBC连接SQL Server2017数据库
    oracle INS-13001 环境不满足最低要求
  • 原文地址:https://www.cnblogs.com/songxingzheng/p/ASP-NET-SignalR-Troubeshooting.html
Copyright © 2020-2023  润新知