2017-02-14 14 views
1

.Net Client経由でSignalRハブに接続していて、IISをリセットして接続が失われるまで、サーバ上で機能を呼び出すことは問題ありません。接続が自動的に復元されると、Invokeは機能しなくなります。SignalR Invokeが再接続後に機能しなくなる

Webアプリケーションのログで、.Netクライアントの再接続が成功し、クライアントの接続状態がConnectedに戻っていることを確認しました。しかし、Invoke呼び出しは何もしていません。さらに、私が呼び出しでWait()を呼び出すと、永遠にハングします。

コード:

//Works fine before connection lost, but hangs after connection restored 
myProxy.Invoke("MyServerFunction", param1).Wait(); 

任意のアイデア?クライアントがローカルで実行されていてlocalhostに接続しているときに、これは起こらないことに注意してください。別のサーバーに再接続するときにのみ発生します。

答えて

0

同じ問題が発生しており、ワイヤーシャークでチェックしていますが、ハブからクライアントに送信されるトラフィックはありません。 コミュニケーションの周りの別の方法は正しく流れています!

これまでのところ、私は解決策を確立することができませんでしたが、あなたの投稿を維持して、ちょうど私の所見を共有したいと思いました。

ハブとクライアントにトレースを追加し、ハブが接続をクローズしてもクライアントは認識しないことに気付きました。それがされなくなった次のタイプの通常のメッセージ、があるように使用されるのと同じ接続

02:34:36.3191340 - d1992c3d-fbec-43e6-9662-b3e94af39418 - OnMessage({"I":"232"}) 

ホバーを使用し続けて、クライアント上の

SignalR.Transports.TransportHeartBeat Verbose: 0 : d1992c3d-fbec-43e6-9662-b3e94af39418 is dead 
    SignalR.Transports.TransportHeartBeat Information: 0 : Removing connection d1992c3d-fbec-43e6-9662-b3e94af39418 

とロギング中:ハブのログファイルから 送信されます。

このページから
02:34:35.2053710 - d1992c3d-fbec-43e6-9662-b3e94af39418 - LP: OnMessage({"C":"d-7D145E50-B,18|N,5|O,1","M":[]}) 
02:34:35.2073150 - d1992c3d-fbec-43e6-9662-b3e94af39418 - LP Poll: http://172.16.2.101:8074/signalr/poll?clientProtocol=1.4&transport=longPolling&connectionData= ... 

Signal R on the wire 私は{ "I": "232"}ということを学びました:サーバーvoidメソッドが正常に完了したメッセージがあることを意味します。

どちらが正しいのですか。ハブで処理されている更新を見ることができます。しかし、同じ接続IDでメソッドを呼び出すと何も起こりません。そして、ハブが接続が死んでいるとみなしたので、それは奇妙ではありません!

なぜ、送信メッセージのハブで接続が壊れていますが、ハブはその接続からのメッセージをまだ処理できませんでしたか?

追加調査結果:Here私はこれが実際にデフォルトによって無効になり、この問題に関する最後のコメントであることを参照hereを発見した「クライアント側のチェックが長いポーリング輸送に利用されていないキープアライブ」と述べられています「...サーバーからの通信を受信しなくなりました...」

正しく理解すれば、クライアントを有効にするには、GlobalHost.Configuration.KeepAlive と設定してクライアントを有効にしてください。クライアントが接続の死を検出しないのはなぜですか?

+0

新しい接続が作成されていますか?クライアントが着信トラフィック用に使用しているが、Invokeはまだ古いデッド接続を使用しているという新しいもののように聞こえるためです。 –

+0

クライアントはまだ古い接続を使用していますが、ハブにはOnDisconnectedがありますが、新しいOnConnectedまたはOnReconnectedはありません。しかし、私はハブが "私"と一緒にメッセージを受け取るのは奇妙だと思っていますが、コネクションが死んだと思っています。これは同じように見えますが、マイルストーン2.1.2で閉じられ、バージョン2.2を使用しています:[Issue 3259](https://github.com/SignalR/SignalR/issues/3259)再接続プロセスは決して引き起こされませんクライアント側では、サーバーからの通信を受信しなくなります – Boscabouter

0

実際には最良の解決策ではありませんが、状態が「再接続」に変わったときに接続を再初期化するだけでした。うまくいけばガベージコレクションは元の接続を世話します。

この問題は最終的に解決されることを願っています。

関連する問題