問題タブ [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 - PollingDuplexHttpBindingでセッションを閉じる
WCF PollingDuplexHttpBindingチャネルを使用して、Silverlightクライアントに通知をプッシュしています。ほとんどの場合、それはうまく機能しますが、いくつかの基本的なセッション管理機能を正しく機能させるために私はそれと戦っています。
私が抱えている最大の問題は、クライアントがセッションを終了し、通知が不要になったことをサーバーに通知しようとすることです。クライアントでのCloseAsync呼び出しは、チャネルのクライアント側がそのセッションの新しい通知の要求のみを送信するのを停止し、サーバーにCloseSessionSOAP要求も送信します。問題は、チャネルのサーバー側がCloseSessionアクションを認識しないという404を送り返すことです。私が見る限り、エラーはPollingDuplexHttpBindingチャネルの内部からのものであり、セッションの終了を適切に処理できるようにアプリケーションに反映されていません。
他の誰かがこの問題に遭遇し、おそらくそれを回避する方法を見つけましたか?
wcf - Silverlight 3 WCF クライアントで NotFound CommunicationException を受け取る
Silverlight 3 から WCF サービスを呼び出そうとすると、非常に役に立たない CommunicationException が発生します。例外のメッセージは、「リモート サーバーがエラーを返しました: NotFound」です。各内部例外は、同じメッセージをオウム返しします。この問題の原因となっているセットアップの問題はありますか?
これが私のセットアップです。WCF サービスは、.NET 4.0 プラットフォームで実行される Windows サービスでホストされます。次の 3 つのエンドポイントがあります。
- メイン エンドポイントは pollingDuplexHttpBinding バインディングを使用し、アドレスは「DashboardService」です。
- メタデータ交換エンドポイントは mexHttpBinding バインディングを使用し、アドレス "mex" を持ちます
- エンドポイントを提供するポリシー (クロスドメイン呼び出しを許可する必要があります) は、webHttpBinding バインディングを使用し、アドレス "" を持ちます。
system.serviceModel セクション全体は次のとおりです。
Silverlight クライアント コードで、サービス参照を追加しましたが、うまく機能しているようです。そして、クライアントは期待どおりにサービスのクロスドメイン ポリシーを取得します。しかし、DashboardService のメイン メソッドを呼び出すと、CommunicationException が発生し、サーバー側メソッドのブレークポイントに到達しません。サービス参照を追加して生成された Silverlight ClientConfig ファイルを次に示します。
このセットアップに問題はありますか? または、ポーリング二重 HTTP バインディングを機能させるために必要な追加の作業はありますか? または、少なくとも、問題の内容に関する詳細情報を入手する方法を知っていますか?
編集:
代わりにコードを使用してクライアントとサーバーのバインディングを設定して、それが役立つかどうかを確認しようとしましたが、それでも同じ例外が発生します。サーバーコードは次のとおりです。
クライアントコードは次のとおりです。
編集2:
クライアントコードをこれに変更しようとしましたが、同じ問題が発生します:
c# - WCF (Silverlight) Duplex - サーバーにヒットしない
Vista と Windows 7 で、VS 2008 SP 1 と Silverlight 3 ツールを使用して、Silverlight プロジェクトが埋め込まれた Web アプリケーションを作成しました。
デュプレックス サービス コード:
デュプレックス構成セクション:
<system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="DuplexServerBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> < serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> <services> <service behaviorConfiguration="DuplexServerBehavior" name="DuplexServer"> <endpoint address="" binding="wsDualHttpBinding" contract="DuplexServer" /> <endpoint address="mex" バインディング="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> </system.serviceModel>
次のように、クライアント アプリケーションで Duplex サービスをセットアップしました。
これと並行してシンプレックス サービスを使用しており、シンプレックス サービスへの呼び出しがサーバー上のブレークポイント設定にヒットし、ステップ スルーできます。
Duplex サービスへの呼び出しはブレークポイントに到達しませんが、クライアントでエラーは発生しません。Fiddler で HTTP トラフィックを調べると、最初のリクエストの後に何百もの 202 リクエストが発生していることがわかります。これらはポーリング リクエストだと思います。
最初のデュプレックス要求:
POST http://localhost/CTC.Test.WCF.Server/DuplexServer.svc HTTP/1.1 Accept: / Content-Length: 665 Content-Type: application/soap+xml; charset=utf-8 UA-CPU: x86 Accept-Encoding: gzip、deflate User-Agent: Mozilla/4.0 (互換; MSIE 7.0; Windows NT 6.0; (R1 1.6); SLCC1; .NET CLR 2.0.50727; InfoPath. 2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618) ホスト: cotocovista4.cotoco.local 接続: Keep-Alive プラグマ: no-cache
<s:封筒 xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">< s:Header><a:Action s:mustUnderstand="1">urn:IDuplexServer/SendEcho</a:Action><netdx:Duplex xmlns:netdx="http://schemas.microsoft.com/2008/04/ netduplex"><netdx:アドレス> http://docs.oasis-open.org/ws-rx/wsmc/200702/anonymous?id=ae3e3139-0df8-41eb-97db-69c2c48782b7</netdx:アドレス><netdx: SessionId>43f9e320-cde3-4e21-a748-e5b29c10ee25</netdx:SessionId></netdx:Duplex><a:To s:mustUnderstand="1"> http://cotocovista4.cotoco.local/CTC.Test.WCF .Server/DuplexServer.svc</a:To></s:Header><s:Body><SendEcho><message>Message!</message></SendEcho></s:Body></s:封筒> ;
後続の二重リクエスト:
POST http://localhost/CTC.Test.WCF.Server/DuplexServer.svc HTTP/1.1 Accept: / Content-Length: 588 Content-Type: application/soap+xml; charset=utf-8 UA-CPU: x86 Accept-Encoding: gzip、deflate User-Agent: Mozilla/4.0 (互換; MSIE 7.0; Windows NT 6.0; (R1 1.6); SLCC1; .NET CLR 2.0.50727; InfoPath. 2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618) ホスト: cotocovista4.cotoco.local 接続: Keep-Alive プラグマ: no-cache
<s:封筒 xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">< s:Header><a:Action s:mustUnderstand="1"> http://docs.oasis-open.org/ws-rx/wsmc/200702/MakeConnection</a:Action><a:To s:mustUnderstand ="1"> http://cotocovista4.cotoco.local/CTC.Test.WCF.Server/DuplexServer.svc</a:To></s:Header><s:Body><wsmc:MakeConnection xmlns:wsmc ="http://docs.oasis-open.org/ws-rx/wsmc/200702"><wsmc:アドレス> http://docs.oasis-open.org/ws-rx/wsmc/200702/anonymous? id=ae3e3139-0df8-41eb-97db-69c2c48782b7</wsmc:Address></wsmc:MakeConnection></s:Body></s:封筒> ;
なぜこれが起こるのか誰か知っていますか?接続例外のスローを停止したときに、最後の問題を最終的に解決したと思いました....
よろしく
トリス
更新: 次のプロジェクト タイプでこれを再作成しようとしました: WCF アプリケーション、Web アプリケーション、Web プロジェクト。Duplex パラメーターに WCF メッセージを使用する MS Example を問題なく実装することに成功しましたが、WSDL を使用して二重 Web サービスを迅速に組み立てる方法を探していました。
wcf - WCF、Silverlight:PollingDuplexHttpBindingを介した要求/応答は可能ですか?
私たちは、メッセージングPollingDuplexHttpBinding
を行うためにしばらくの間使用しています。Pub/Sub
クライアントがデータフィードをサブスクライブできるようにする結果を返さないメソッドがあり、サービスはCallBack
コントラクトを介してデータをプッシュバックします。
ちょうど今、私たちはいくつかのRequest/Reply
メソッドをに追加していますOperationContract
。クライアントはSilverlight3であるため、これらのメソッドはasync Begin() End()
パターンを使用して呼び出されます。問題は、を使用してこれを機能させることができないことPollingDuplexHttpBinding
です。常に次のエラーが発生します(クライアントスタックHTTPが使用されている場合)。
サーバーは意味のある応答を提供しませんでした。これは、コントラクトの不一致、セッションの早期シャットダウン、または内部サーバーエラーが原因である可能性があります。
ブラウザスタックを使用すると、HTTP 500: Not Found.
BasicHttpBinding
メソッドへの切り替えRequest/Reply
は完全に正常に呼び出されますが、明らかにPub/Sub
このバインディングではメソッドを使用できません。
メッセージングのタイプごとに2つの別々のエンドポイントを使用することもできますが、そうではなく、バインディングがPub/Sub
パターンのみをサポートするのは奇妙に思えます(これが動機ですがPollingDuplexHttpBinding
)。
誰かが私のためにこれを片付けることができますか?出来ますか?
wcf - PollingDuplexHttpBinding でクライアントの切断を処理する方法
通信に PollingDuplexHttpBinding を使用する Silverlight 3 クライアントを使用して、WCF サービスを実装しています。クライアントが最初にサーバーから切断せずにブラウザを閉じた場合の処理の代替手段は何ですか?
最終的に TimeoutException がスローされることはわかっていますが、これをキャッチできますが、これを検出するより良い方法はありますか?
ありがとう。
silverlight-4.0 - HttpPollingDuplex の serverPollTimeout 構成
SilverlightとHttpPollingDuplexを使用してカード ゲームを作成しています。
ゲーム (silverlight クライアント) から呼び出すことができる 4 つの個別の http 二重サービスがあります。
1.チャットサービス
2.認証サービス
3.ロビーサービス
4.ゲームサービス
IIS 7.5でゲームをホストした後、Fiddlerを使用して、 Silverlightクライアントがリクエストを順番にポーリングし、アプリケーションが非常に遅くなることに気付きました。たとえば、チャット サービス クライアントからメッセージを取得するには、他のサービスのポーリングが完了するまで待機する必要があるためです。サービスのserverPollTimeoutを変更してポーリングをより速く終了するよりも、ゲームの動作が速くなりましたが、サービスへのリクエストは順次続行されます。だから質問は
複数のポーリング サービスの場合、クライアント プロキシを作成するか、クライアントがポーリング クエリを並行して実行するように構成することはできますか? そうでない場合、私の場合、serverPollTimeoutを変更することをお勧めしますか? または、私にとって最適な構成は何ですか?
別のスレッドでプロキシを作成し、サービスメソッドを呼び出すことは役に立ちません:(
どうもありがとう!
wcf - コンソール アプリケーションで wcf 二重サービスを使用する
Silverlight で正常に動作する wcf デュプレックス サービスがあります。しかし、Windowsコンソールアプリケーションで消費したいのと同じサービスです。次のように私のコード:
App.config は「空」です:
それは私にエラーを与えます:
バインディング 'CustomBinding' は、チャネル タイプの作成をサポートしていません。これは多くの場合、CustomBinding の BindingElements が正しくスタックされていないか、間違った順序でスタックされていることを示しています。スタックの一番下にトランスポートが必要です。BindingElements の推奨される順序は、TransactionFlow、ReliableSession、Security、CompositeDuplex、OneWay、StreamSecurity、MessageEncoding、[...] です。
私たちを手伝ってくれますか?前もって感謝します。
silverlight - ダイコネクトされたデュプレックスポーリングクライアントを検出する方法
HTTPポーリングデュプレックスWCFチャネルを使用してTomekJanczukのPub/subサンプルを追跡しましたが、クライアントがブラウザーを閉じて切断すると、サービスが次のコールバックで通知しないことに気付きました。エンドポイントがもう存在しないという例外などを期待していました。
クライアントへの公開を停止するために、クライアントがいつなくなったかをどのように知ることができますか?
silverlight - Silverlight PollingDuplex InnerChannel が multipleMessagesPerPoll (serverPollTimeout) で失敗しました
Silverlight クライアント バージョン 4.0.50917.0 および SDK バージョン 4.0.50826.1 を実行しています。
wcf pollingduplex バインディングに対して単純な Silverlight クライアントを作成しました。
Web.config:
</system.serviceModel>
私のSilverlightクライアントは次のように接続します:
innerchannel のイベント ハンドラーに障害が発生しました。
...
上記を使用すると、Client.InnerChannelFaulted イベントが1 つ serverPollTimeout
の直後に発生します。(デフォルトは 15 秒、Fiddler で検証済み)
クライアントを次のように接続するように切り替えると:
別名、ポーリング フィドラーごとに 1 つのメッセージはserverPollTimeout
、新しいポーリングが開始されるたびにチャネルに障害が発生していないことを明らかにします。
ここで何が問題なのですか?
編集:
http://social.msdn.microsoft.com/Forums/en/wcf/thread/1e6aa407-4446-4d4a-8dac-5392250814b8とhttp://forums.silverlight.net/forums/p/200659/468206を読みました.aspx#468206 と私は、「singleMessagePerPoll」がまともな回避策ではないことに同意します。私のバージョンでわかるように、SDK と開発者ランタイムの最新バージョンを実行しています。
EDIT2:
IE8 の代わりに Google Chrome をブラウザーとして使用すると、MultipleMessagesPerPoll が正常に動作することがわかりました。私には、これはランタイムと ie8 のバグのようなにおいがしますか?
EDIT3:
Silverlight WS ブログで確認済み: リンク
asp.net - 新しく追加されたglobal.asaxファイルがWCFサービスを台無しにする方法
Duplex と「通常の」非同期呼び出しの両方をポーリングして WCF を使用する Silverlight アプリがあります。global.asax ファイルを追加するまで、すべてが正常に機能していました。
1時間のグーグル検索の後、スタブ化されたSession_startイベントをコメントアウトすることを提案するJean-Dirk Stuartによるかなり古いブログに出くわしました。
確かに問題は修正されましたが、懸念が生じます。global.asax ファイルの良性のように見えるこのメンバーが、なぜ wcf 呼び出しを中断するのでしょうか。