2014-02-21 3 views
0

SQL 코드에서 곧 테이블이 업데이트되는 것처럼이 코드를 수정했습니다. 하지만이 문제를 해결할 방법을 찾을 수 없습니다. SignalR 클라이언트가 정의되지 않았습니다.

Uncaught TypeError: Cannot read property 'client' of undefined

<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> 

어떻게

이는 해결 될 수있다?

답변

2

허브의 이름을 낙타의 경우로 변경하지 않았다는 것이 문제라고 생각합니다. 아래를 참조

당신이 HubName 속성을 사용하는 경우
var job = $.connection.dataHub; 

는 자바 스크립트 클라이언트에서 낙타 경우에는 이름 변경이없는 : 또한

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

당신이 ASP.NET MVC 4 또는 5 면도기를 사용하는 경우 보기, 프록시 파일 참조 응용 프로그램 루트를 참조 물결표를 사용

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

나는 이것을 지금했지만, 동일한 문제 – Severiano

+0

@Severiano, 내 업데이트 된 답변을 참조하십시오. – Lin

0

우리는 같은 오류가되었지만, 우리의 경우에 우리는 Windows Server 2008의 IIS 7 일 개 배포했다 (그리고없이 일했다 실수 rs)과 Windows Server IIS 8 (동일한 포스터와 동일한 오류가 발생)에서 다른 하나 (동일한 응용 프로그램, 동일한 코드).

우리의 솔루션은

IIS (8)에 배포 할 때의 Web.config를 수정하고 signalr/허브의 위치 섹션에서 "의 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> 
관련 문제