2015-08-21 11 views
8

Io uso signalr per implementare un'applicazione di chat.
Tuttavia, ottengo il seguente errore:
Impossibile avviare la connessione nel client Winform

`An exception of type 'Microsoft.AspNet.SignalR.Client.HttpClientException'

occurred in mscorlib.dll but was not handled in user code

Additional information: StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:

{

Date: Fri, 21 Aug 2015 07:22:52 GMT

Server: Microsoft-HTTPAPI/2.0

Content-Length: 0

}

non so perché. Sto usando signalR versione 2.2.0 Ecco il mio Hub

class ChatHub : Hub 
{ 
    public void Send(string message) 
    { 
     Clients.All.addMessage(message); 
    } 
    public override Task OnConnected() 
    { 
     Console.WriteLine("Client connected: " + Context.ConnectionId); 
     return base.OnConnected(); 
    } 
} 

Ecco il mio Startup class

class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     app.UseCors(CorsOptions.AllowAll); 
     app.MapSignalR(); 
    } 
} 

programma Il mio Server

class Program 
{ 
    const string url = "http://localhost:8080"; 
    static void Main(string[] args) 
    { 
     WebApp.Start(url); 
     Console.WriteLine("Started server at " + url); 
     Console.ReadLine(); 
    } 
} 

La mia funzione nel cliente winform

private async void AsyncConnect() 
    { 
     Connection = new HubConnection(url); 
     chatProxy = Connection.CreateHubProxy("ChatHub"); 

     chatProxy.On<string>("addMessage", message => 
     txtMessageShow.Text += message + Environment.NewLine); 

     await Connection.Start(); 
    } 
+0

Che tipo dai a 'Connection' e a' chatProxy'? Inoltre, cosa significa "url"? E 'uguale a quello di fom 'const string url'? –

+0

Assegno 'HubConnection connection',' IHubProxy chatProxy' e l'url è 'const string url =" http: // localhost: 8080 "' – KlynkC

+0

Prima di tutto, C# è case sensitive, quindi non si può avere confusione tra ' Connection' e 'connection'. In secondo luogo, 'url' dovrebbe essere' http: // localhost: 8080' –

risposta

0

Il proxy hub sta invocando la pipeline Signalr prima che sia terminata la connessione. Si prega di inserire un gestore di eventi durante il debug per verificare la conferma dello stato della connessione. hubConnection.StateChanged += (e) => { Debug.WriteLine(e.NewState)};