7

最初の ajax の試行中に、IIS がホストする WCF を今すぐ使用することにしました。奇妙なことに、sessionmode が有効になっている場合、WCF は同じユーザー/セッションに対して複数のリクエストを並行して処理できません。asp.net で sessionmode が無効になっている場合、要求は並行して処理されます。ブローザー/クライアントは、いくつかの異なる要求を実行する場合があり、そのうちのいくつかは長時間実行されます。これにより、それ以降のすべての要求がブロックされ、ajax アプリが使用できなくなります。

これは asmx [webservices] にも当てはまります。「IReadOnlySessionState」インターフェイスを使用して Web サービス メソッドをコンパイルするという大きな希望がありましたが、これは Web ページとは逆に影響を与えません。しかし、asp.net セッションへの [ほとんどの場合読み取り専用] アクセスが必要です。

誰かがこの問題の解決策を知っていますか?

とにかく、どうもありがとう!

br--マブラ

4

3 に答える 3

15

.NET 4 では、これをApplication_BeginRequest

if (Context.Request.Path.EndsWith("xxx.svc"))
   Context.SetSessionStateBehavior(SessionStateBehavior.ReadOnly);
于 2011-10-21T12:03:17.317 に答える
0

カスタムセッション状態プロバイダーを提供できます

参照: http: //koolsand.blogspot.com/2010/02/why-iis-hosted-wcf-services-does-not.html

リクエストのパスにsvcが含まれている場合は常に、デフォルトのセッション状態プロバイダーに、読み取り/書き込みロックではなく読み取り専用ロックを使用するように指示します。したがって、読み取り専用ロックを使用すると、次のwcf呼び出しを同時に実行できます。

于 2010-11-08T16:42:58.903 に答える
0

私はこれを見つけました:

http://blogs.msdn.com/silverlightws/archive/2009/09/30/having-a-pollingduplex-service-and-any-other-wcf-service-in-the-same-website-causes-silverlight-遅い呼び出し.aspx

どの州、

「ASP.Netセッションを有効にする場合、すべてのWCFサービスには読み取り/書き込みセッション状態アクセスが必要です。これにより、応答が順番にキューに入れられます。理想的には、ユーザーはWCFハンドラーを読み取り専用に構成できる必要があります。これにより、ポーリング二重サービスが機能します残念ながら、これは現時点ではサポートされていません。」

...私が考えることができる唯一のことは、手動でロックの早期解放を強制する方法があるかどうかです。私は今それを調べています。

于 2010-02-04T05:36:34.607 に答える