1

WCF PollingDuplexHttpBindingチャネルを使用して、Silverlightクライアントに通知をプッシュしています。ほとんどの場合、それはうまく機能しますが、いくつかの基本的なセッション管理機能を正しく機能させるために私はそれと戦っています。

私が抱えている最大の問題は、クライアントがセッションを終了し、通知が不要になったことをサーバーに通知しようとすることです。クライアントでのCloseAsync呼び出しは、チャネルのクライアント側がそのセッションの新しい通知の要求のみを送信するのを停止し、サーバーにCloseSessionSOAP要求も送信します。問題は、チャネルのサーバー側がCloseSessionアクションを認識しないという404を送り返すことです。私が見る限り、エラーはPollingDuplexHttpBindingチャネルの内部からのものであり、セッションの終了を適切に処理できるようにアプリケーションに反映されていません。

他の誰かがこの問題に遭遇し、おそらくそれを回避する方法を見つけましたか?

4

2 に答える 2

2

見た目ではできません、PollingDuplexHttpBindingのGripes

于 2009-11-17T11:47:20.823 に答える
1

その不満な記事は素晴らしく、DuplexoverHTTPを実行するときにSilverlightの動作が非常に遅いという関連する問題を間接的に解決しました。基本的に、この問題は、WebサイトでASP.Netセッション状態がオンになっていて、(ClientHttpスタックの代わりに)SilverlightのBroserHttpスタックを使用していることが原因で発生します。

Yavorは、問題を説明するのに(この記事では)良い仕事をしています:

http://blogs.msdn.com/b/silverlightws/archive/2009/09/30/having-a-pollingduplex-service-and-any-other-wcf-service-in-the-same-website-causes- silverlight-calls-to-be-slow.aspx

この問題が発生した場合の簡単な修正は、サービスを呼び出す前にClientHttpスタックのルートを登録することです。これは、次のコマンドを呼び出すだけで実行できます。

WebRequest.RegisterPrefix(requestUri.AbsoluteUri, WebRequestCreator.ClientHttp);

requestUriがサービスのURIである場合。お役に立てれば。

于 2011-02-14T16:57:03.843 に答える