問題タブ [asynchronous-wcf-call]

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.

0 投票する
1 に答える
3005 参照

wcf - WCF への複数の非同期呼び出し中の例外 (メッセージを処理できませんでした...)

WCF クライアントから「メッセージを処理できませんでした...」というエラーが表示されます。助けてください、それは私を殺しています。

forループを通過してx回の非同期呼び出しを開始するテスト勝利アプリがあります。各非同期呼び出しは、WCF プロキシの独自のインスタンスをインスタンス化し、そのプロキシを使用して WCF サービスを呼び出します。xが約 35 以下であれば問題ありません。x > 40 程度の場合、多くの呼び出しは問題なく完了しますが、少数の呼び出しは次のように返します。

メッセージセキュリティを備えたクライアント側とサーバー側の証明書を使用しています。なぜそれが特定の回数だけ正常に動作し、その後吐くのかわかりません。また、反復の終わりに近づいた呼び出しでエラーがスローされるようです。また、このエラーは、クライアント側とサーバー側で同じように設定されているタイムアウトに達するずっと前に発生します。

さらに、サービスのスロットリングを使用しています。

何か案は?

ありがとう、マーク。

0 投票する
2 に答える
388 参照

asynchronous-wcf-call - Web サービス一括更新

.NET Web サービスで更新メソッドの「バッチ更新」バージョンを提供する説得力のある理由はありますか?

HTTP 経由で非同期または同期の複数の呼び出しを行うことよりも大きな利点はありますか?

私の最初の衝動は、非同期呼び出しを提供し、入力コンポジットにレコード ID を含め、マイクロ最適化としてバッチ操作を提供するという要件に反対することです。または、消費者に反復ループを使用して複数の呼び出しを行うように要求します。

私は悪い提案をしたくありません。

0 投票する
1 に答える
1334 参照

c# - 非同期WCFクエリの最終ステップ

複数のwcfサービスを同時にクエリする非同期パターンを実装する方法を学習しようとしていますが、すべての同時呼び出しが完了していることを確認する方法がわかりません。非同期操作を実行し、操作が完了するとリストに追加するクラスがあります。

私の2つの質問は次のとおりです。

1)すべての同時呼び出しが終了したときにのみリスト結果を取得するようにするにはどうすればよいですか?たとえば、ループ内でGetAsync()を呼び出して、いくつかの並行プロセスを開始する場合、リスト結果からデータを取り出す前に、それらがすべて終了していることを確認する必要があります。

2)GetContinuation()呼び出し内でBeginExecute()を使用し、コールバック関数と同じメソッドGetAsyncComplete()を再帰的に使用できますか?または、それは大量のスレッドを作成し、実際に物事を遅くしますか?

ありがとうございました。

0 投票する
1 に答える
899 参照

wcf - 現在実行中の操作をキャンセルして残りのデータを返すようにWCFサービスに通知します。

削除するために何千ものアイテムをwcfサービスに送信するこのクライアントアプリケーションがあります。データがまとめて送信されるため、(プログレスバーで)操作をキャンセルしても、すべての項目が削除されます。私が望む動作は、サービスの削除操作をキャンセルして、削除されていないアイテムを取得できるようにすることです。ありがとうございました。

0 投票する
1 に答える
773 参照

c# - IISおよび非同期メソッドを使用したWCFの最大同時セッション-リソースの解放

フォームからWCFサービスを呼び出しています。サービスはIISでホストされています。次の属性を持つサービス:InstanceContextMode.PerSession、ConcurrencyMode = ConcurrencyMode.Multiple

すべての同時呼び出し、インスタンス、およびセッションについて、スロットル動作を最大2000に設定しました。

ただし、200を超えるASynchリクエストを取得できないようです。その後、サービスは応答せず、セッションは最終的にタイムアウトになります。

Asynch呼び出しを使用して、サービスのメソッドを呼び出しています。コードをコピーする

IASyncResult res = Proxy.BeginMethod(endCall、null);

次に、応答をキャッチするために、IASyncResultを受け取り、EndMethod()を介して結果を処理するendCall関数があります。

負荷シミュレーション@1秒のメソッド呼び出しでは、約200回の呼び出しまですべて正常に機能し、その後待機します...(この時点で、これらの200回の呼び出しから199または198の応答があります)。-理論的にはそこにあります。 2つ程度の200の同時セッションであってはなりません。

おそらく、私が行っていないガベージコレクションまたはクロージングがありますか?助言がありますか?

- - アップデート - -

おそらく、プロキシのクローズがスレッドセーフな方法で処理されないという答えが多いと思います。Radikが上記で指摘しているように、プロキシを閉じることは重要ですが、多くのIASyncStateの結果が同時に表示されるため、適切なタイミングで適切な結果を閉じるようにする必要があります。

スレッドからクローズプロキシを起動して、個別に処理できるようにしました。

ThreadPool.QueueUserWorkItem(CloseProxy、ar.AsyncState);

しかし、それはうまくいかないようです。これに関する提案はありますか?

0 投票する
1 に答える
435 参照

c# - Windowsサービスからの非同期WCFサービス呼び出し

非同期のWCFサービス呼び出しを利用するWindowsサービスを作成しました。テストの結果、サービスのメソッドは完全に実行されているようですが、Windowsサービス自体へのコールバックが処理されていません。

ロギングを読んだときに、非同期サービス呼び出しが返されるはずの次のエントリに出くわしました。

これは、サービスが実行されているアカウントに関連している可能性がありますか、またはこれが発生している別の理由がある可能性がありますか?これはNetworkServiceの下にあります。

0 投票する
1 に答える
1512 参照

java - Java および REST Web サービスとの非同期通信はできますか?

値を返すのに数分かかることがある REST Web サービスを使用しているクライアントで、Java との非同期通信を実行できますか?

以下を確認した後、そうではないと思います。ただし、C#はこれを許可します

ユーザー1019776

非同期 WCF 呼び出しを行う場合、どの方法が優先されますか? および WCF 非同期コールバック

しかし、それらは REST に適用されますか? おそらくそうではありません。

クライアントに関して: WCF クライアントを非同期にするにはどうすればよいですか?

回答: 非同期の WCF イベントを処理するには、イベント メソッドを介してクライアントを非同期にします

(ただし、非同期の「ファイア アンド フォーゲット」イベントであることを確認してください)。Java に関するこのスレッドも参照してください (パブリッシャー/サブスクライバー同期モデルの詳細: Java には、C# のイベントと同様に、イベントのネイティブ サポートがありますか? )

0 投票する
1 に答える
755 参照

wcf - WCF非同期呼び出し-eventhandlerでの例外

WCF非同期呼び出し-eventhandlerでの例外

eventhandlerを使用してWCFメソッドを非同期で呼び出しています。'EventAddCallback'イベントでエラーが発生し、'e.Error'は次のエラーを示します。誰もが理由を知っていますか?サンプルコード、エラー情報、トレース情報、および試したオプションを追加しました。

System.Reflection.TargetInvocationException:操作中に例外が発生し、結果が無効になりました。例外の詳細については、InnerExceptionを確認してください。---> System.ServiceModel.CommunicationException:https://demosite.com/ourservice.asmxへのHTTP応答の受信中にエラーが発生しました。これは、HTTPプロトコルを使用していないサービスエンドポイントバインディングが原因である可能性があります。これは、サーバーによってHTTP要求コンテキストが中止されたことが原因である可能性もあります(おそらくサービスのシャットダウンが原因です)。詳細については、サーバーログを参照してください。---> System.Net.WebException:基になる接続が閉じられました:受信時に予期しないエラーが発生しました。---> System.IO.IOException:トランスポート接続からデータを読み取れません:既存の接続がリモートホストによって強制的に閉じられました。---> System.Net.Sockets.SocketException:既存の接続がリモートホストによって強制的に閉じられました

トレースを有効にすると、表示されます。

0 投票する
2 に答える
6443 参照

c# - WCFは、ジョブが完了するのを待たずに関数を呼び出しますか?

クライアント側では、WCF サービスから関数を呼び出すたびに、ローカル関数を呼び出すように、関数が WCF サービスで完了するまで待機します。したがって、新しいスレッドで目的の関数を開始する関数をそれぞれに追加して、ほとんどすべての関数が次のようになるようにしました。

例: CLIENT
から関数を呼び出します:client.ReceiveFile()

サーバーでは、次のようにする必要があります。

ポイントは、クライアントから sendFile を送信すると、サービスに受信を開始するように指示しますが、新しいスレッドを開始しなかった場合、クライアントはサービスがファイルを受信するのを待機し、ファイル データを送信しません。

WCF は、サービス関数が完了するまでクライアントを待たせない方法をサポートしています。または、上記の方法を使用する必要がありますか?