問題タブ [pollingduplexhttpbinding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wcf - WCF サービスがカスタム データ型で壊れる
WCF サービスが正常に動作するという問題があります。二重サービスを作成しようとしていますが、カスタム データ型を返そうとするたびに、クライアント側が壊れます。
GetTestData を削除すると、すべて正常に動作します。追加すると、クライアント側ですべてが壊れます。「参照されたアセンブリで型を再利用する」のチェックを外すことで修正できるようですが、これを行うことで悪影響があるかどうかはわかりません。
ここにコードがあります
ITestService.cs
TestService.cs
TestData.cs
wcf - app.config コンソール アプリでのポーリング二重化の構成
コンソール アプリケーションでポーリング二重バインディングを構成する際に問題が発生しています。これは私が受け取っているエラーです:
Configuration binding extension 'system.serviceModel/bindings/pollingDuplexHttpBinding' could not be found. Verify that this binding extension is properly registered in system.serviceModel/extensions/bindingExtensions and that it is spelled correctly.
また、ここに私のapp.configからのスニペットがあります:
質問
- コンソール アプリでポーリング二重化を構成することさえ可能ですか?
- もしそうなら、私は何を間違っていますか?
ありがとう
wcf - WCF サービス クリア バッファ
私は現在 WCF サービスに取り組んでおり、小さな問題があります。このサービスは、Polling Duplex サービスです。サーバーに送信されたメッセージを介してデータ転送を開始します。次に、サーバーは、コールバック チャネルを介してクライアントに大量のデータ パケットをかなり迅速に送り返します。
停止するには、停止するようにサーバーにメッセージを送信します。次に、これを確認するメッセージをコールバック チャネル経由で送信して、クライアントに知らせます。
問題は、大量のデータ パケットがバッファリングされ、コールバック チャネルを介してクライアントに送信されることです。これにより、最初にすべてのデータが通過するのを待たなければならないため、確認応答が返されるまでの待ち時間が長くなります。
サーバー側でコールバック チャネルのバッファをクリアする方法はありますか? データが失われることを心配する必要はありません。データを破棄して、すぐに確認メッセージを送信するだけで済みます。
wcf - Macのブラウザ外のSilverlightクライアントでの二重サービス障害のポーリング
Macで「ブラウザ外」を実行するSilverlightクライアントがあります。このクライアントは、ポーリングデュプレックスバインディングを介してWCFサービスを利用します。
クライアントで、クライアント側のサービスを表すSystem.ServiceModel.DuplexClientBase派生物の「InnerChannel」プロパティによって公開された「Faulted」イベントをリッスンしています。
ちょうど1分後、この「障害」イベントがトリガーされ、その後、チャネルは機能しなくなります。つまり、サーバーがコールバックチャネルを介してメッセージを送信しようとすると、タイムアウト例外が発生します。
これが私が持っている理論です:クライアントの基礎となるポーリング操作には1分のタイムアウトがあると思われます。サーバー側では、pollingDuplexHttpBindingセクションのserverPollTimeoutプロパティが1分以上に設定されています。これは、サーバーが1分を超えてポーリング要求を保持していることを意味します。その間、サーバーはクライアントに何も通知しません。これにより、クライアントのポーリングメッセージのタイムアウトが明らかになったのではないかと思いました。私の理論をテストするために、serverPollTimeout設定を1分未満に減らしましたが、実際、問題は示されていません。
クライアント側には、PollingDuplexBindingElement.ClientPollTimeoutプロパティがあります。これは、このブログによると、クライアントに1分以上待機するように指示する設定です。この設定のデフォルトは5分で、明示的に設定したこともありますが、問題は解決しません(上記の回避策はありません)。
この問題は、ブラウザクライアント以外のMacでのみ発生することに注意してください。
要約すると、ここに私の質問があります:
- ここで問題が何であるかを正確に伝える説明的なエラーメッセージをどこでどのように見ることができますか?
- なぜそれはブラウザクライアントの外のMacでのみ起こるのですか?
- 誰かが私の理論を確認できますか?
- 私の理論が正しい場合、クライアントでポーリング要求のタイムアウトを実際に設定するにはどうすればよいですか?
wcf - サーバーで送信メッセージ バッファをクリアする方法は?
PollingDuplexHttpBinding
それを消費する Silverllight クライアントを持つサービスを作成しました。私のサービスには、基本的に、一定数のクライアントがサービスにデータを送信し (非常に頻繁に、毎秒、データは非常に大きく、各呼び出しは約 5KB です)、他のクライアントからサービスに送信された新しいデータをリッスンします。チャット ルーム アーキテクチャに非常によく似ています。
私が気付いている問題は、クライアントがインターネット経由でサービスに接続すると、数分後にサービスの応答が遅くなり、応答が遅れることです。私は、サービス ホストのアップロード容量 (インターネット アップロード速度、サーバー上では約 15KB/秒のみ) に達すると、他のクライアントから送信されたメッセージはバッファリングされ、利用可能な帯域幅がある場合に応じて処理されるという結論に達しました。サービスがクライアントから受信したメッセージを格納するために使用するこのバッファーの占有をどのように正確に制限できるのでしょうか? 私のクライアントがすべてのデータを取得することはそれほど重要ではありませんが、他の人から送信された最新のデータを取得することは重要です。
要するに、サービスがいっぱいになったとき、または特定の上限に達したときはいつでもキュー/バッファをきれいにして、遅延を取り除くために受信した呼び出しで再び埋め始めることができるようにしたい. どうすればいいですか?プロパティはMaxBufferSize
、クライアント側だけでなくサービス側でも減らす必要がありますか? または、サービスでこの機能をコーディングする必要がありますか? 何か案は?
ありがとう。
編集:
これが私のサービスアーキテクチャです:
サービス構成:
クライアントは通常、次のように 500 ミリ秒から 1000 ミリ秒の間にサービスを呼び出します。
_client.PublishNotificationAsync(byte[] data);
コールバックは、他のクライアントから送信された通知をクライアントに通知します。
要約すると、クライアントの数が増加し、インターネットを介したサービス ホストのアップロード速度が制限されている場合、サービスによってサブスクライバーに送信されたメッセージはどこかにバッファリングされ、キューで処理されます。これが問題の原因です。これらのメッセージがどこにバッファリングされているかわかりません。LAN では、サーバーのアップロード速度がダウンロード速度と同じであるため、サービスは正常に動作します (100KB/秒の着信呼び出しに対して、100KB/秒の通知を送信します)。これらのメッセージはどこにバッファリングされますか? そして、どうすればこのバッファをクリアできますか?
メッセージがサービスでバッファリングされているかどうかを確認するために実験的なことを行いました。クライアントでこのメソッドを呼び出してみましたが、他の誰かが送信した通知を 1 つのクライアントがまだ受信中の場合でも、常に 0 を返します 4- 5分前:
wcf - WCF >> DUPLEX >> SILVERLIGHT >> pollingDuplexHttpBinding = 非常に遅い! 大きな遅延
私は持っている
WPF applciation の wsDualHttpBinding バインディングを使用した WCF --> 正常に動作します。WCF パブリッシュ メソッドをすぐに取得します。
silvelight 4 の pollingDuplexHttpBinding を使用した別のバインディング --> 非常に遅い --> wpf アプリケーションが取得してから 30++ 秒の遅延 (WPF はすぐに取得します)
何故ですか ?最高のグーグル結果は
どうやって続けるか本当にわからなかった...
wcf - PollingDuplexHttpBindingエンドポイントが見つかりません-コンテンツの不一致
Silverlightからアクセスできるコンソールで実行されるWCFホストサービスを作成しました。私のPolicyHostはうまく機能し、私のサービスは正常にロードされます。Silverlightクライアントに移動して「サービス参照の追加」を実行し、VS2010に適切なwsdlを使用してサービス参照をダウンロードしてプロキシを生成させることができます。
ただし、最初のメソッドを呼び出すと、毎回次のメッセージが返されます。
リモートサーバーがエラーを返しました:NotFound。
Wcf TraceLog Viewerを介してこれをもう少し掘り下げると、次のようになります。
コンテンツタイプapplication/mspd1が、application / soap+msbin1を予期しているサービスに送信されました。クライアントとサービスのバインディングが一致していない可能性があります。コンテンツタイプ'application/mspd1'が予期されたタイプ'application/ soap + msbin1'ではなかったため、メッセージを処理できません
ここで、コールバックを削除し、DuplexPollingを削除して、WsHttpBindingに戻します。メソッド呼び出しは正常に機能しているようです。
デュプレックスポーリングを正しく機能するように設定しようとして、何か足りないものはありますか?
グレッグ
wcf - VisualStudioがPollingDuplexプロキシクライアントを生成していません
Visual Studioは、PollingDuplexプロキシのコンストラクターを作成していません。WCFクライアントには、HttpPollingDuplexBindingオブジェクトとエンドポイントアドレスを含むコンストラクターを備えた8つのコンストラクターが必要です。ただし、オーバーロードは5つしかなく、クライアントにはコールバックメソッドがありません。この問題を解決するにはどうすればよいですか?
wcf - 自己ホスト型 WCF サービスのコードでカスタム バインディング拡張機能を登録する方法は?
自分でホストする WCF サービス用に、Silverlight 二重通信 (PollingDuplexHttpBinding を使用するため) のカスタム バインディング拡張機能を登録するための提案が必要です。
以下は、この msdn ページから取得したバインディングの詳細です。
上記の xml コードをコード ビハインドを介してカスタム バインドに追加する必要があります。
wcf - Silverlight PollingDuplex timeouts
I'm currently working on an application that implements a polling duplex service. I am having issues with the client aborting and I'm not sure why or the right way to handle using the client.
Right now I am getting the client in a hello message like this
Then I am just hanging on to that in my class and sending things using it like this
There can be any amount of time in between sending data because it depends on user interaction. The problem I am having is I am getting this following error.
Is this the incorrect way to handle the client? Any idea why its aborting?
It also seems to do it even when I'm sending messages once a second over it, it seems like it just times out after a little while no matter what.