2013-02-12 2 views
4

Я просто немного играю с сигналом. Мое приложение имеет только один простой хаб, который хранится в приложении ASP.NET, и я написал WPF-клиент, который взаимодействует через концентратор houconnection и созданный прокси с приложением ASP.NET. Все работает нормально на моем локальном ПК. Я развернул приложение ASP.NET по адресу IIS.SignalR WPF Клиент не может достичь концентратора, развернутого в IIS, когда IIS работает в другой системе.

Теперь я получаю до точки ...

Когда я печатаю следующий в моем браузере моей ПК (pcthi-и)

http://pcthi-and:8080/signalr/hubs 

Я получу то, что я хочу

Когда я набираю тот же URL-адрес в браузере еще шт. Я получу тот же ответ, и все выглядит нормально.

Но мое приложение работает только на моем компьютере, а не на другом. Когда я запускаю hubconnection на другом ПК, я не получаю connectionId.

Я попытался изменить URL-адрес на мой IP-адрес без эффекта.

Браузерный вызов концентратора работает, но приложение не работает.

Вызов выглядит следующим образом:

private bool tryToConnectToCoffeService() 
    { 
     try 
     { 
      this.hubConnection = new HubConnection(ConfigurationManager.ConnectionStrings["coffeeConnection"].ConnectionString); 

      this.hubConnection.Credentials = CredentialCache.DefaultNetworkCredentials; 

      this.coffeeService = this.hubConnection.CreateHubProxy("coffee"); 

      this.hubConnection.Start(); 

      if (string.IsNullOrEmpty(hubConnection.ConnectionId)) 
      { 
       return false; 
      } 

      return true; 
     } 
     catch(Exception ex) 
     { 
      return false; 
     } 
    } 

The Global.asax:

public class Global : System.Web.HttpApplication 
{ 

    protected void Application_Start(object sender, EventArgs e) 
    { 
     RouteTable.Routes.MapHubs(); 
    } 

Концентратор как этот

[HubName("coffee")] 
public class CoffeeHub : Hub 
{ 

My Hub Строка подключения это :

"http://pcthi-and:8080/" 

Или:

"http://My-Current-IP-Address:8080/" 

Я использую SignalR 1.0 RC2.

У кого-нибудь есть идеи? Спасибо за помощь.

Приветствия

Frank

ответ

1

Я думаю, что вам нужно изменить

hubConnection.Start(); 

в

hubConnection.Start().Wait(); 

Если вы работаете в .NET 4.5 вы могли бы сделать метод tryToConnectToCoffeServiceasync и затем await, когда y ou запустите соединение концентратора.

await hubConnection.Start(); 

Это, вероятно, сегодня работает на локальном хосте, так как клиент может завершить подключение до того if (string.IsNullOrEmpty(hubConnection.ConnectionId)) выполняет.

Возможно, потребуется больше времени для подключения с другой машины, которая предоставляет условия гонки, если вы не дождались завершения HubConnection.Start().

+0

большое спасибо, вчера я прочитал ваше сообщение, и я действительно с нетерпением ждал, чтобы следовать вашим советам на работе, и это работает ;-)! большое спасибо. – waywayway

Смежные вопросы