2012-04-27 3 views
1

클라이언트를 자체 호스팅 된 SignalR 서버에 연결하려고합니다.자가 호스트 된 signalR 서버와 클라이언트를 연결하는 가장 간단한 샘플?

내 서버는 다음과 같습니다

static void Main(string[] args) 
    { 
     string url = "http://localhost:8081/"; 
     var server = new Server(url); 

     server.MapConnection<MyConnection>("/echo"); 

     server.Start(); 

     Console.WriteLine("Server running on {0}", url); 

     Console.ReadKey(); 
    } 

    public class MyConnection : PersistentConnection 
    { 
    } 

그것은 내가 생각 해낸 할 수있는 간단한이었다. 그리고 클라이언트 모양은 다음과 같습니다 :

static void Main(string[] args) 
    { 
     SignalR.Client.Connection conn = new SignalR.Client.Connection("http://localhost:8081/echo"); 
     Task start = conn.Start(); 
     start.Wait(); 

     if (start.Status == TaskStatus.RanToCompletion) 
     { 
      Console.WriteLine("Connected"); 
     } 

     Console.ReadKey(); 
    } 

위의 코드는 작동하지 않습니다. 서버가 시작되었지만 연결할 클라이언트 코드를 실행할 때 오류가 발생했습니다.

원격 서버에서 오류를 반환했습니다 : (500) 내부 서버 오류.

그리고 서버에서 나에게 오류가 발생했습니다. 삭제 된 개체에 액세스 할 수 없습니다.

내가 깜빡 했나요? 내가 도대체 ​​뭘 잘못하고있는 겁니까? 0 : 내가 서버에서 얻을 오류는 다음과 같은 ....

SignalRtest.vshost.exe 오류입니다 : 'System.AggregateException'형식의 첫째 예외 mscorlib에 발생 편집

.dll 작업에 의해 throw되는 SignalR 예외 : System.AggregateException : 하나 이상의 오류가 발생했습니다. ---> System.ObjectDisposedException : 폐기 된 개체에 액세스 할 수 없습니다. 개체 이름 : 'System.Net.HttpListenerResponse'. at System.Net.HttpListenerResponse.CheckDisposed() at System.Net.HttpListenerResponse.get_OutputStream() at SignalR.Hosting.Self.Infrastructure.ResponseExtensions. <> C_ DisplayClass4.b _1 (IAsyncResult를 아칸소) System.Threading.Tasks.TaskFactory.FromAsyncCoreLogic에서 (IAsyncResult를 IAR, 액션 1 endMethod, TaskCompletionSource 1 TCS) --- 내부 예외 스택 추적 끝 --- --- > (내부 예외 # 0) System.ObjectDisposedException : 폐기 된 개체에 액세스 할 수 없습니다. 개체 이름 : 'System.Net.HttpListenerResponse'. at System.Net.HttpListenerResponse.CheckDisposed() at System.Net.HttpListenerResponse.get_OutputStream() at SignalR.Hosting.Self.Infrastructure.ResponseExtensions. <> C_ DisplayClass4.b _1 (IAsyncResult를 아칸소) System.Threading.Tasks.TaskFactory.FromAsyncCoreLogic (IAsyncResult를 IAR, 액션 1 endMethod, TaskCompletionSource 1 TCS)에서 < ---

'client.vshost.exe'(관리 (v4.0.30319)) :로드 'C : \ WINDOWS \ 어셈블리 \ GAC_MSIL \의 Microsoft.VisualStudio.DebuggerVisualizers \ 10.0.0.0__b03f5f7f11d50a3a \ Microsoft.VisualStudio.DebuggerVisualizers.dll'그것 때문에 서버 변수를 배치하는 것처럼

+0

이것에 대한 해결책이 있었습니까? 나는 똑같은 일을 경험하고있다. – Etch

+0

아니요,하지만 vs11을 설치하고 디버그 모드로 실행하면 ..... 위의 코드가 실행됩니다 ..... –

답변

0

이 보이는 나중에 함수에서 사용되는 것을 보지 못합니다. Main 함수의 끝에 GC.KeepAlive (서버)를 추가하여 일찍 처리되지 않도록하십시오. 또는 더 나은 아직,하지만 그것을 사용하여 성명.

+0

저는 그것이 옳지 않다고 확신합니다. 이 샘플 코드는 잘 작동합니다. 그러나 그것은 아무것도하지 않습니다. 나는 500가 실제로 무엇인지 알아 내기 위해 디버깅을 제안 할 것이다. – davidfowl

+0

프로젝트를 디버깅 할 수 없도록 VS11이 설치되어 있지는 않지만 서버 측에있는 오류 로그를 추가했습니다. –

+0

SignalR 저장소를 복제 한 VS11을 설치했습니다. 디버그 모드와 VS11에서 동일한 코드를 실행하면 ... 작동합니다! –

관련 문제