【问题标题】:SignalR client undefinedSignalR 客户端未定义
【发布时间】:2014-02-21 21:26:11
【问题描述】:

我有这个前端代码在 sql 表中更新后立即更新表。 但是我找不到解决这个问题的方法。

未捕获的类型错误:无法读取未定义的属性“客户端”

<script src="Scripts/jquery-1.6.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.0.2.min.js"></script>
<script src="signalr/hubs"></script>
<script>
    $(function () {
        // Proxy created on the fly
        var job = $.connection.DataHub;
        console.log(job);
        // Declare a function on the job hub so the server can invoke it
        job.client.displayStatus = function () {
            getData();
        };

        // Start the connection
        $.connection.hub.start();
        getData();
    });

    function getData() {
        var $tbl = $('#tblJobInfo');
        $.ajax({
            url: '../api/values',
            type: 'GET',
            datatype: 'json',
            success: function (data) {
                if (data.length > 0) {
                    $tbl.empty();
                    $tbl.append(' <tr><th>ID</th><th>Titulo</th>/tr>');
                    var rows = [];
                    for (var i = 0; i < data.length; i++) {
                        rows.push(' <tr><td>' + data[i].Id + '</td><td>' + data[i].titulo + '</td></tr>');
                    }
                    $tbl.append(rows.join(''));
                }
            }
        });
    }
</script>

如何解决?

【问题讨论】:

    标签: c# javascript asp.net signalr


    【解决方案1】:

    我想问题是您没有将集线器的名称更改为驼峰式。见下文:

     var job = $.connection.dataHub;
    

    如果您使用 HubName 属性,则 JavaScript 客户端上的名称不会更改为驼峰式:

    [HubName("DataHub")]
    public class DataHub: Hub
    

    此外,如果您使用的是 ASP.NET MVC 4 或 5 Razor 视图,请使用波浪号在您的代理文件参考中引用应用程序根:

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

    【讨论】:

    • 我现在这样做了,但同样的问题
    【解决方案2】:

    我们遇到了同样的错误,但在我们的例子中,我们在 Windows Server 2008 IIS 7 上部署了一个(并且它没有错误地工作),在 Windows Server IIS 8 上部署了另一个(相同的应用程序,相同的代码)(引发了相同的问题)错误作为原始海报)。

    我们的解决方案是在 IIS 8 上部署时修改 web.config 并注释掉信号器/集线器的位置部分中的“system.webServer”部分。

    (注意 system.webServer 已注释)

    <location path="signalr/hubs"> 
        <system.web> 
            <authorization> 
                <allow users="*"/> 
            </authorization> 
        </system.web> 
        <!--system.webServer> 
            <security> 
                <authorization> 
                    <add accessType="Allow" users="*"/> 
                </authorization> 
            </security> 
        </system.webServer--> 
    </location> 
    

    这是原始版本,它适用于 IIS 7,但在 IIS 8 上失败:

    (注意system.webServer没有注释)

    <location path="signalr/hubs"> 
        <system.web> 
            <authorization> 
                <allow users="*"/> 
            </authorization> 
        </system.web> 
        <system.webServer> 
            <security> 
                <authorization> 
                    <add accessType="Allow" users="*"/> 
                </authorization> 
            </security> 
        </system.webServer> 
    </location> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      相关资源
      最近更新 更多