2014-07-25 24 views
10

Basit bir HTML sayfası ve bazı JavaScript ile SignalR üzerinden iletişim kurmak için bir ASP.NET Web Uygulaması var. Bu iyi çalışıyor.SignalR 2.1.0: Bağlantı kurulmadı

 var connection = new HubConnection("http://localhost:32986/"); 
     var hub = connection.CreateHubProxy("MessageHub"); 
     connection.Start(); 
     hub.Invoke("SendMessage", "", ""); 

son satırı InvalidOperationException: The connection has not been established. neden olur Ama bağlantı kurabiliyorum: Şimdi (aynı çözeltide) ve .NET Signalr Müşteri Api kullanarak başka projeden Hub üzerinde bir yöntemi çağırmak çalışıyorum JavaScript kodumdan hub'a.

C# kodu kullanarak Hub'a nasıl bağlanabilirim? Bu yayını yazdıktan sonra an, .Wait() eklemek çalıştı

GÜNCELLEME ve işe yaradı! Yani bunu yapacak:

 var connection = new HubConnection("http://localhost:32986/"); 
     var hub = connection.CreateHubProxy("MessageHub"); 
     connection.Start().Wait(); 
     hub.Invoke("SendMessage", "", ""); 

cevap

12

HubConnection.Start Eğer bir yöntemi çağırmak için önce tamamlaması gereken bir Task döndürür.

public async Task StartConnection() 
{ 
    var connection = new HubConnection("http://localhost:32986/"); 
    var hub = connection.CreateHubProxy("MessageHub"); 
    await connection.Start(); 
    await hub.Invoke("SendMessage", "", ""); 
    // ... 
} 

// or 

public void StartConnection() 
{ 
    var connection = new HubConnection("http://localhost:32986/"); 
    var hub = connection.CreateHubProxy("MessageHub"); 
    connection.Start().Wait(); 
    hub.Invoke("SendMessage", "", "").Wait(); 
    // ... 
} 

"Nasıl bağlantı kurmak için: Bunu yapmak için

iki yolu bir zaman uyumsuz yönteminde ise beklemektedir kullanmak veya zaman uyumsuz olmayan yönteminde ise Task.Wait() kullanmak için vardır "ASP.NET SignalR Hubs API Guide for the .NET client.'un bölümü daha da ayrıntılı hale geliyor.

+1

Üçüncü seçenek: 'ContinueWith'. Bu aslında istemci tarafında yapılan yoldur, bu yüzden JS ve C# kullanımları arasında biraz tutarlılık ekler. – Corey