4

私はsignalRで少し遊んでいます。私のアプリケーションには、ASP.NET アプリケーションに格納されている単純なハブが 1 つしかなく、ハブ接続と作成されたプロキシを介して ASP.NET アプリケーションと対話するWPF clientを作成しました。ローカル PC ではすべて正常に動作します。ASP.NET アプリケーションIISに配置しました。

今、私は要点に達しています...

自分のPCのブラウザに次のように入力すると(pcthi-and)

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

欲しいものは手に入れる

別のPCのブラウザに同じ URL を入力すると、同じ応答が返され、すべて正常に表示されます。

しかし、私のアプリケーションは自分の PC でのみ動作し、他の PC では動作しません。他の PC でハブ接続を開始すると、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;
        }
    }

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
{

私のハブ接続文字列は次のとおりです。

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

または:

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

SignalR 1.0 rc2 を使用しています。

誰にもアイデアがありますか?助けてくれてありがとう。

乾杯

フランク

4

1 に答える 1

1

私はあなたが変わる必要があると思います

hubConnection.Start();

hubConnection.Start().Wait();

.NET 4.5 を実行している場合は、tryToConnectToCoffeServiceメソッドasyncを作成しawaitてから、ハブ接続を開始することができます。

await hubConnection.Start();

if (string.IsNullOrEmpty(hubConnection.ConnectionId))クライアントは実行前に接続を完了することができるため、今日はローカルホストで機能する可能性があります。

完了するのを待たずに存在する競合状態を公開する別のマシンからの接続には、おそらく時間がかかりますHubConnection.Start()

于 2013-02-12T18:45:37.657 に答える