2013-05-07 6 views
2

SignalR v. 1.0.0 RC2를 사용하고 있었는데 정상적으로 작동했습니다. v. 1.0.1로 업그레이드 할 때 작동이 중지되었습니다. 나는 이제 허브에서 메소드를 호출하려고 할 때 403 (금단)을 얻고있다. 나는 어떤 코드도 변경하지 않았다 - 나는 단지 새로운 버전의 SignalR로 업데이트했다. AppHarbor 및 Chrome 브라우저에서만 실행할 때만 로컬에서 실행할 때 아무런 문제가 없다는 점에 유의해야합니다. IE 10과 Firefox 20에서 작동합니다.v. 1.0.1 (Chrome)으로 업데이트 한 후 AppHarbor에서 403R 신호가 발생했습니다.

나는 새로운 버전의 SignalR에서 인증 작업을 수행 한 것으로 알고 있습니다. 이제 허브에 Authorize 특성을 추가하거나 허브 메서드를 추가 할 수 있습니다. 나는 그 일을하고 싶지만, 전에는 그랬던 것처럼 - 먼저 그 일을하지 않고 일하고 싶습니다.

내 허브 :

using System.Threading.Tasks; 
using Microsoft.AspNet.SignalR; 

public class ReceptionHub : Hub 
{ 
    public Task Join(string group) 
    { 
     return Groups.Add(Context.ConnectionId, group); 
    } 
} 

그리고 이것은 클라이언트 사이트 스크립트 (I 마크 업에서 데이터 속성에서 그룹을 얻을)입니다 : 내 로컬 설정 사이

$(function() { 
    var receptionHub = $.connection.receptionHub; 

    receptionHub.client.updateStatusBar = function (checkedIn, checkedOut, preRegistered) 
    { 
     $('#quantityCheckedInToday').html(checkedIn); 
     $('#quantityCheckedOutToday').html(checkedOut); 
     $('#quantityPreRegistered').html(preRegistered); 
    }; 

    $.connection.hub.start().done(function() { 
     var group = $("#statusBar").data("group"); 
     receptionHub.server.join(group); 
    }); 
}); 

한 가지 차이점 AppHarbor에 대한 설정은 HTTPS에서 AppHarbor 사이트를 실행한다는 것입니다.하지만 그 전에는 문제가되지 않았습니다. 또한 AppHarbor에서 서버의 infront로드 밸런서가 있습니다.

실패 요청이 URL에 POST 요청입니다 :

/signalr/send?transport=serverSentEvents&connectionToken=5hSSl7wSPrkD51cmPNw-JCrrdxMn2qOgEgmKt5gKrE4jigE4Sxha3gALHREcyDslqb7xjY9fP8rTMpslKuBJzBCIi-q86ZmHt66xhqi2eioAtvQCO03XlcR0Dq9-RW5G0 

어떤 도움이 많이 나는 지금 SignalR 1.1.2 사용하여 시도했다

답변

3

을 감사합니다 - 그리고 아직 크롬에서 작동하지 않았다 ,하지만 이번에는 훨씬 더 나은 오류 메시지를 보냈습니다. 그것은 CORS가 꺼져 있다고 말했다. 구성에서 CORS 켜기를 시도했습니다.

이 문제가 해결되어 이제 Chrome에서 다시 작동합니다. CORS가 Chrome에서 작동하도록 설정해야하는 이유를 모르겠습니다 ... 아마도 일부 특수 AppHarbor 설정입니다.