2012-12-28 2 views
0

SignalR 1.0.0-rc1을 사용하여 ASP.NET 4.5 웹 응용 프로그램을 얻었습니다.이 웹 응용 프로그램은 Azure 웹 사이트에 신속하고 더러운 테스트를 위해 푸시했습니다. 저는이 페이지에 주로 관심이 있습니다 : http://alantaappbeta.azurewebsites.net/api/v3.0/Tests/Sample.htm).Azure 웹 사이트의 "ping"중 SignalR 500 오류가 발생했습니다.

문제는 페이지가 SignalR 서비스와 대화하고 싶지 않은 것입니다. http://alantaappbeta.azurewebsites.net/signalr/hubs이 정확한 클라이언트 측 허브 파일을 반환하고/signalr/negotiate를 호출하면 합리적으로 보이는 JSON이 반환되기 때문에 허브와 모든 것이 올바르게 등록됩니다.

{ 
    "Url":"/signalr", 
    "ConnectionId":"a15023f9-c675-4fc2-9fd6-403a297f10c0", 
    "KeepAlive":15.0, 
    "DisconnectTimeout":40.0, 
    "TryWebSockets":false, 
    "WebSocketServerUrl":null, 
    "ProtocolVersion":"1.1" 
} 

그러나/signalr/ping을 호출하면 "프로토콜 오류 : 알 수없는 전송"메시지와 함께 500 오류가 반환됩니다. 스택 추적 오류 페이지 반환은 다음과 같습니다

[InvalidOperationException]: Protocol error: Unknown transport. 
at Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequestAsync(HostContext context) 
at Microsoft.AspNet.SignalR.Hubs.HubDispatcher.ProcessRequestAsync(HostContext context) 
at Microsoft.AspNet.SignalR.Owin.CallHandler.Invoke(IDictionary`2 environment) 
at Microsoft.AspNet.SignalR.Owin.Handlers.HubDispatcherHandler.Invoke(IDictionary`2 environment) 
at Microsoft.Owin.Host.SystemWeb.OwinCallContext.Execute() 
at Microsoft.Owin.Host.SystemWeb.OwinHttpHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object extraData) 
at Microsoft.Owin.Host.SystemWeb.OwinHttpHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) 
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

을이 푸른에 있기 때문에, 당신이 일반적으로있는 것 모든 문제 해결 도구에 액세스 할 수없는,하지만 로그 것은 내가 할 수 있었다 위 정보 이외에 다른 정보를 제공하지 않기 위해 액세스하십시오.

내 로컬 IIS 인스턴스에서 잘 실행됩니다 .-).

제안 사항?

편집 :

$.connection.hub.start({ 
    transport: 'auto', 
    xdomain: true 
}).done(function() { 
    console.log('Connected with hub.id=' + $.connection.hub.id); 
}).fail(function (e) { 
    console.log('Unable to connect to SignalR Hubs: ' + e); 
}); 

그러나 어느 것도 .done()이나 .fail() 핸들러가 호출되고 있지 : 이것은 내 연결을 여는거야 방법이다.

이상하게도 전송을 'longPolling'으로 설정하면 내 로컬 상자에서 IIS Express를 사용하여 유사한 방식으로 실패 할 수 있습니다. 그러나 내가 Azure에서 운송 수단을 설정 한 것은 아무런 차이를 느끼지 않는 것 같습니다. 나는 여전히 같은 오류를 얻습니다.

+0

dev 브랜치를 사용하고 있습니까? – davidfowl

+0

아니, NuGet의 RC1 패키지. –

+1

ping 엔드 포인트가 RC1 릴리스에 없습니다. – davidfowl

답변

0

내 컴퓨터에 서로 다른 버전의 SignalR이 혼합되어 있다는 사실이 드러났습니다. NuGet 패키지 (1.0.0-rc1)에서 서버 측 DLL을 사용하고 있었지만 JavaScript 클라이언트 파일 dev 지점에서 왔습니다. 일단 내가 모두 동기화 시키면, 모든 것이 잘 작동했다. 나는이 문제가 왜 Azure에서만 나타나는지 정확히 알지 못하지만 IIS의 다른 버전에서 지원되는 정확한 전송과 관련이 있다고 생각됩니다.

관련 문제