1

私たちはウェブを検索し、同じことに関する何百もの投稿を見つけましたが、私たちが見つけたものはまだこの問題を解決していません。

したがって、この質問をもう一度することを許してください。しかし、ここで何が起こっているのかを理解するために本当に助けが必要です。

HTMLページからIE7から起動するフレックスアプリがあります。SWFアプリが起動されると、バックエンドJavaサービス(Weblogic 10で実行)を数回呼び出して情報を取得します。そして、これは非常にうまく機能します。

ここで問題となるのは、同じクライアントでこれらのインスタンスのいくつかを開くときです。たとえば、複数のタブを開くか、複数のIE7ウィンドウを開くことによってです。次に、#2032ストリームエラーが発生します。

[FaultEvent fault=[RPC Fault faultString="HTTP request error" 
faultCode="Server.Error.Request" faultDetail="Error: [IOErrorEvent type="ioError" 
bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. 
URL: http://ServerName:Port/Myservice"]. URL: http:// ServerName:Port/Myservice"]     
messageId="CA4B34AD-7A46-461E-7C6F-4D618ED0A112" type="fault" bubbles=false 
cancelable=true eventPhase=2] 

ここで、httpを入力すると:// ServerName:Port /My​​service[スペースを無視する]

IE7では、問題なくサービスにアクセスします。したがって、URLは正しいです。

SOAP UIを介して同じサービスを呼び出すと、何度も応答が返されます。

私が解決策を見つけた最も近いものはサイトにあります

http://faindu.wordpress.com/2008/04/18/ie7-ssl-xml-flex-error-2032-stream-error/

画面を起動するHTMLヘッダーのキャッシュ戦略を変更する必要があることを示している場合。

そのため、すべてのHTMLページにMETAタグを追加しました

<head>
<META Http-Equiv="Cache-Control" Content="no-store">

しかし、wiresharkを使用すると、返される応答で、キャッシュ制御がHTMLで指定されているようにno-storeではなくno-cache(コードスニペットの最後)に設定されていることがわかります。

POST /MyService/MyService HTTP/1.1 Accept: */* Accept-Language: en-US x-flash-
version:     
10,3,183,20 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Content-Length: 528 
Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows 
NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 
3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E) Host: dhtqawl01:8081 
Connection: Keep-Alive Cache-Control: no-cache

これが私たちの問題を解決するかどうか、または私たちが間違っている可能性があることを知っていますか?

-使用法とブラウザの使用法に関する追加の応答

これは、IE7とFirefoxを使用してのみテストされました(バージョンを思い出せません)。当社はFirefoxではなくIEをサポートしています。したがって、Firefoxに移行することはできません。ただし、Firefoxでも試してみました。それほど頻繁には発生しません。IEでは4つのうち2つが失敗します。Firefoxでは、12回の失敗ごとに約2回までプッシュしました。

これは、IE7とFirefoxを使用してのみテストされました(バージョンを思い出せません)。当社はFirefoxではなくIEをサポートしています。したがって、Firefoxに移行することはできません。ただし、Firefoxでも試してみました。それほど頻繁には発生しません。IEでは4つのうち2つが失敗します。Firefoxでは、12回の失敗ごとに約2回までプッシュしました。私がネットで読んだもの(そして私はこの問題の専門家ではありません)。サーバーに対して行われるすべての呼び出しで、ブラウザーにはその応答をキャッシュするオプションがあります。ここで、同じプロセスを開く複数のブラウザ画面を開くと、たとえば、すべてのIEウィンドウで同じ呼び出しが行われます...どういうわけか、これらの応答は混同されます。今、この男が提供されたURLで提案したこと。キャッシュされないようにヘッダーのキャッシュオプションを設定しているということです。そうすれば、応答は必要な場合にのみ存在するため、取り違えることはありません。

ユーザーはこのようにシステムを使用しません。しかし、時々、まったく同じエラーメッセージが表示されます。彼らは、複数のセッションを開かないと述べています。しかし、これまでのところ、これを再現できる唯一の方法でした。

ファイアウォールについて...IE、Firefox、SoapUIで少なくとも1回は機能するため、これが問題になる可能性があるかどうかはわかりません。

4

1 に答える 1

0

IEの場合(いくつかのバージョンでは問題が見つかりませんでした)。

しかし、回避策を見つけました。

結局、キューでHttpManagerを使用することになりました。キューに追加するすべてのリクエスト。次に、HttpManagerは最初の4つの要求を実行し、応答を取得すると応答を確認し、2032エラーが発生した場合は、3回再試行し、最後に停止してエラーを表示し、キュー内の次の要求を続行します。

同時リクエストの最大数を制限することで、再試行する必要はほとんどありませんでしたが、極端なテストケースでは、2回だけ再試行する必要がありました。したがって、3回で十分でした。

また、シミュレーションリクエストの数を試してみたところ、4のままになりました。これを増やすと、すべての呼び出しを行うための合計時間が長くなります。

于 2015-04-29T20:41:04.333 に答える