0

私たちが構築したフッ素統合の一部に、本当に奇妙な問題があります。

キャプチャが付いたフォームがあります。キャプチャ画像は、独創的なタイトルの.Net / AMF WebサービスGetCaptchaImage.ashxから入力され、Flash内のテキストハイパーリンクから再読み込みできます。

IEの一部のバージョン(特にIE8ですが、他のバージョンの場合もあります)では、 IEバージョンのエミュレーションwmodeに関係なく、テキストリンクをクリックすると、FluorineゲートウェイへのHTTP呼び出しが正常に行われますが、Webサービスへの呼び出しは行われません。それに従います。Microsoft Fiddlerを使用してHTTPトランザクションを検査すると、次のことがわかります。

POST http://www.domain.com/gateway.aspx
200 OK (application/x-amf)

他には何もありませんが、他のブラウザでは次のように表示されます。

POST http://www.domain.com/gateway.aspx
200 OK (application/x-amf)
GET http://www.domain.com/GetCaptchaImage.ashx
200 OK (image/gif)

呼び出しを行うコードは、オーバーライドなしでから継承されているようorg.osflash.signals.Signal.dispatchに見えるため、JustBloodyWork™ではない理由がわかりません。実際のメソッド呼び出しは次のようになります。

private function getNewCaptcha(event:MouseEvent):void
{
    getCaptchaAgain.dispatch();
    trace("Captcha button click");
    GlobalDebugger.log(this, "Captcha button click!");
}

ここで、コードベース全体でのその他の言及は次のgetCaptchaAgainとおりです。

public var getCaptchaAgain:Signal = new Signal();

compForm.getCaptchaAgain.add(getTheCaptchaAgain);

そして、他の唯一の出現getNewCaptchaは次の行です。

_cantReadCaptchaButton.addEventListener(MouseEvent.CLICK, getNewCaptcha);

編集: Juan Pablo Califanoは、への参照があることに気付かなかったと指摘しました。getTheCaptchaAgainこれは、と誤解していましgetCaptchaAgainた。それは次のように定義されます

private function getTheCaptchaAgain():void
{
    captchaSignal.dispatch();
}

onFormResponseそして、それが面白くないところからのみ呼び出されます。captchaSignalで定義されています

public class CompetitionFormMediator extends AbstractFactoryAccessorMediator
{
    [Inject]
    public var captchaSignal:CaptchaSignal;
    // ...
}

CaptchaSignal拡張org.osflash.signals.Signalされ、面白くありませんが、次の行の読み取りで呼び出されます。

signalCommandMap.mapSignalClass(CaptchaSignal, CaptchaCommand);

CaptchaCommand拡張し、呼び出しSignalCommandの内部で終了しますflash.events.EventDispatcher

var callFunction:Function = serviceHub.call;
callFunction.apply(serviceHub, collectArgs);

手がかりを提供しない引数のはどこcollectArgsですか。Array

編集を終了

いったいなぜその2番目の呼び出しがWebサーバーに到達しないのか誰かが知っていますか?FlashがHTTPを発行しない理由はわかりませんGETが、同様に、ブラウザー(このブラウザーだけでなく)がHTTPを抑制している理由も考えられません。私はFlash開発者ではありませんが(ここでは.Netチームを運営しています)、奇妙なことは何も見られず、私もFlashチーム(コードを作成した開発者を含む)も、これが発生する理由を考えることはできません。起こっている。

誰かアイデアはありますか?

4

1 に答える 1

0

結局のところ、Flashの他の場所で問題が発生したようであり、問​​題のハンドラー(/GetCaptchaImage.ashx)はブラウザーによって変更されていないと見なされます。

そのため、他の多くのことを行う必要はなく、キャッシュ設定の問題を解決しました。

皆さん、特にフアン・パブロにご協力いただきありがとうございます。

于 2011-04-18T11:59:57.417 に答える