問題タブ [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 と Silverlight >> pollingDuplexHttpBinding >> ブラウザーを閉じたときに Silverlight から Web サービスを呼び出す
pollingDuplexHttpBinding binding を使用する WCF サーバーと Silverlight クライアントがあります。
接続を閉じて、ユーザーをクリアする EndSession 操作メソッドを呼び出したい
アクティブなユーザーの一覧を表示し、セッションを閉じます ( IsTerminating = true
)
これによると、 Application_Exit イベントで wcf 操作を呼び出すことはできません。また、
私には「2非常にうるさい」と思われる解決策、
ここでのオプションは何ですか?これが唯一の方法ですか?
1) リンク ソリューションを使用していますか?
2) サーバーは X 秒ごとにメソッドを実行して、デュプレックス オブジェクトの状態が有効であることを確認しますか?
3) その他?! 簡単なビルトインソリューション? なぜ Silverlight は地獄なのか?!
wcf - Silverlight4WCFポーリングデュプレックスがIISExpressで機能しない
pollingDuplexHttpBindingでWCFサービスを使用するSilverlight4チャットプログラムがあります。
プログラムは正常に動作します:*カッシーニ*IISローカルWebサーバー*すべての非デュプレックスWCFサービスはどの設定でも正常に動作します
ただし、IIS7.5Expressでは機能しません。呼び出しは行われますが、500 HTTPエラーが発生し、何も起こりません(例外はスローされず、プログラムはそれを無視します)
これが私のWeb.Configです
wcf - 2 番目の wcf polling duplex サービス呼び出しが長すぎます
WCF サービスに奇妙な問題があります。pollingDuplexBinding と Silverlight クライアントを使用しています。バインディングは、このコードによって web.config に登録されました
最初の呼び出しではすべて問題ありません。サービスはデータをすばやく返します。しかし、2 回目の呼び出しでは 5 分以上実行されます。大きなタイムアウトを設定すると、結果がクライアントに返されます。それ以外の場合は、TimeoutException がスローされます。私が呼び出している WCF メソッドは何もしません - 短い文字列を返すだけです。
WCF トレースによると、クライアントがこのメソッドを呼び出してから 5 分後に 2 番目のサービス呼び出しが行われ、すぐに実行されます。これらのサービス属性を使用します。
クライアントコードです
wcf - WCF: ランダムに応答しない
クライアント リクエストがランダムに WCF サービス コールに応答しないという奇妙な問題があります。
セットアップは、HTTP バインディングと PollingDuplex バインディングの両方を使用して WCF サービスを呼び出す Silverlight 5 アプリケーションです。SL はロード時に多数のリクエストを行い (20 秒で 20 以上)、そのうちの 1 つまたは 2 つに対する応答を受信しないことがあります。明確にするために、まったく同じ要求が 90% の時間で機能します。ページを更新すると、すべての要求が応答を得ることができます。
エラーは、送信された実際の要求ではありません。これも Fiddler を使用して検証します。これは、リクエストが行われていることを確認するためです (コンテンツが以前の成功したリクエストと同じであることを確認してください) が、リクエストに対する応答がありません。最終的に、クライアントは要求をタイムアウトにします。WCF サービスは IIS7 でホストされており、両方で診断とログを有効にしています。WCF サーバーのトレース ログには、クライアントが要求をタイムアウトしたときにログに記録されたメッセージのみが表示されます。クライアントのタイムアウト時に、「メッセージの処理中」アクティビティの下に次の例外アクションが記録されます。無効なリクエストを送信している可能性があります。」これは、HTTP の本体が WCF に到達していないかのようです (WCF ハンドラーに渡す前に、IIS によって受信された完全な要求をログに記録できるかどうかわかりません)。前述したように、Fiddler を使用すると、メッセージ全体が有効であることがわかります (この動作は、Fiddler がトラフィックを盗聴していない場合にも発生することに注意してください。したがって、Fiddler を問題として除外しました)。
通常、「メッセージを処理中」アクティビティには「宛先: 処理アクションxxx」があります。
私が言ったように、これは Http および PollingDuplex サービスで、私の開発ボックスと実稼働 Web サーバーで発生します。さまざまなエンドポイントでも発生しますが、発生するため、WCF スロットリング動作とは関係ないと思います
診断に役立つ追加情報やヒントなど、原因を突き止めるための情報やヘルプをいただければ幸いです。
.net - WCF Silverlight クライアントがポーリング メッセージに対して 404 not found 応答を取得する
最終的に、WCF デュプレックス Silverlight 4 クライアント404 Not Found
は、ポーリングが WCF サービスから Silverlight クライアントに送信された直後に、ポーリング メッセージのエラーを受け取り始めます。これは、2 回目のポーリングで発生する場合があり、接続が数時間または数日かかることもありますが、ほとんどの場合、最初の数分で失敗します。
! そして興味深いのは、MaxMessagesPerPoll
デュプレックス モードを使用している場合の既知の Silverlight 4 のバグのような問題であり、解決策はこことここで説明されていますが、私はSingleMessagePerPoll
モードを使用しています。とにかくClientStack
、提案どおりに使用してみましたが、何も変わりませんでした。
一般的な流れ:
- SL クライアントが WCF サービス メソッドを実行し、応答を受信
- 次に、すぐにSL クライアントがポーリング メッセージをサービスに送信し始め、2 番目または Ns のポーリング メッセージの例外を取得します。
System.Net.WebException: リモート サーバーがエラーを返しました: NotFound
- Fiddler
404
は、ポーリング メッセージに対して空の応答のみを表示します - その後、クライアント Channel Faulted イベントが発生しました
このような障害が発生した後、SL クライアントを再接続しようとしています。単一の再接続再試行フロー:
Faulted
イベントを処理する- 次のようなすべてのチャンネル イベントの登録を解除します
Closed/Closing/Opened/Opening
- を使用して正しい方法でチャネルを閉じます
try { close } catch { abort }
- 以下のすべては、新しいスレッド ポール スレッドにあります:(私はこれがわずかに安定して動作することを発見しました -この記事を参照してください)
- 45 ~ 70 秒待ちます
- 同じ
DuplexChannelFactory<T>
インスタンスを使用して新しいチャネルを作成し、ログ記録のみを目的としてすべてのチャネル イベントをサブスクライブします。 - WCF サービス メソッドの実行
1 ~ 10 回の再試行 (~1 ~ 10 分) の後、クライアントは最終的にサーバーに接続し、通常のポーリングを続行します。
WCF サービス ログを見ると、すべての cleint リクエストが例外なく処理されていることがわかります。そのため、Silverlight クライアント側で何かが発生しているようです。
一般的な情報:
- .NET フレームワーク 4.0
- PollingDuplex
- 非同期 WCF メソッド
- IIS 6.0 がホストする WCF サービス
- Silverlight 4 クライアント
- クライアント OS: Windows XP SP2
- サーバー OS: Windows 2003 R2 SP2
- NTLM 認証
- DuplexMode: SingleMessagePerPoll
- サービスが機能する前に要求/応答を行う他の WCF サービスがあり、二重接続を使用しません
- SL クライアント サービスでは、すべてを UI に記録しているので、すべてのイベント フローを確認し、特定のイベントごとに時間を取ります。
- IIS ログ、サーバー イベント ログにエラーなし
クライアント:
サーバ:
- WCF、PerSession、マルチスレッド
- すべてがスレッドセーフです
- 実行中のサーバー サービス例外なし
- たくさんのログがあるので、サービスで何が起こっているかがわかります
- すべての WCF トレースは switchValue
All
で有効化されており、疑わしいものはありません
wcf - WCFポーリングデュプレックスバインディングの信頼性
Silverlightクライアント用のWCFポーリングデュプレックスサービスがあります。サービスに信頼性を追加したかったのですが、最初にこのエラーが発生しました。
送信メッセージのメッセージバージョン(Soap11(http://schemas.xmlsoap.org/soap/envelope/)AddressingNone(http://schemas.microsoft.com/ws/2005/05/addressing/none))はしませんエンコーダのそれと一致します(Soap12(http://www.w3.org/2003/05/soap-envelope)Addressing10(http://www.w3.org/2005/08/addressing))。バインディングがメッセージと同じバージョンで構成されていることを確認してください。
設定ファイルを変更しましたが、以下のエラーが発生します。WCFポーリングデュプレックスで信頼性はサポートされていますか?
サービス参照構成の認識されない要素'reliableSession'。Silverlightで使用できるのは、WindowsCommunicationFoundation構成機能のサブセットのみであることに注意してください。
wcf - Windows Phone 7 WCFCallBackPollingDuplexバインディングエラー
WindowsPhone7プロジェクトでWCFを使用しています。プロジェクトにWCFのコールバックサービスが必要です。しかし、プロジェクトでwsDualHttpBindingを使用しているときにエラーが発生しました。だから、私はそれについてたくさんググった。したがって、私の後の結論は、WindowsPhoneアプリケーションでPollingHttpBindingを使用することです。そこで、PollingDuplexで作業を再開します。サーバー側のWCFサービスで「C:\ ProgramFiles(x86)\ Microsoft SDKs \ Silverlight \ v4.0 \ Server\System.ServiceModel.PollingDuplex.dll」というパスからPollingDuplex参照を使用しました。また、正常に動作し、SLSVCUTIL.EXEを介してサービスを利用することもできます。しかし、PollingDuplex( "C:\ Program Files(x86)\ Microsoft SDKs \ Silverlight \ v4.0 \ Client \ System.ServiceModel.PollingDuplex.dll")参照をWindowsPhone7クライアント側のコードに含めようとすると
「タイプユニバースはアセンブリを解決できません:System.ServiceModel.Extensions、Version = 2.0.5.0、Culture = neutral、PublicKeyToken=31bf3856ad364e35」
このエラーの解決にご協力ください。
システム仕様:
Windows 8(64ビット)
Visual Studio 2012
Windows Phone 8 SDK
Silverlight 4.0
c# - Pollingduplex と NTLM を使用した WCF Servicehost の再起動
私は、winform アプリでホストされている 2 つの WCF サービスを持っています。状況によっては、pollingduplex エンドポイントが正しく開かず、クライアントが接続されないことがあります。これを検出できるようにするために、Silverlight out of browser app はインターフェイスをポーリングし、応答を受信すると、tcp ソケットを介してサービスに通知します。
Out-of-browser アプリの通知が届かない場合、wcf サービスを再起動したいと考えています。両方のサービスで servicehost.close() を呼び出し、その後に servicehost.open() を呼び出します。
http://localhost:18524/IService/
奇妙なことに、basichttp バインディングを使用したサービスのオープン/クローズは成功しますが、ポーリング デュプレックス バインディングを使用したサービスのオープンはChanneldispatcher 例外で失敗します。サービスホスト。
pollingduplex チャネルのオープン/クローズ タイムアウトで遊んで、クローズ/オープン間の時間を遅らせましたが、効果はありませんでした。
pollingduplex 接続のポートを解放する方法を知っている人はいますか?
手伝ってくれてありがとう。
オープン クローズ コード: public void StartServices() { StopServices();
ポーリング二重チャネルの構成: