0

C# でサーバー アプリケーションを開発し、Flash アクション スクリプト 3.0 でクライアント アプリケーションを開発しました。メッセージ付きでブラウザから呼び出されたときにポリシー ファイルを要求するフラッシュ ソケット

<policy-file-request/>

これまでのところすべて正常です。サーバーはこのメッセージを待っており、次のようなポリシー ファイル文字列をクライアントに送信しています。

public const String POLICY_FILE = "<?xml version=\"1.0\"?>\n" +
    "<!DOCTYPE cross-domain-policy SYSTEM \"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\">\n" +
    "<cross-domain-policy>" +
    "<allow-access-from domain=\"*\" to-ports=\"*\" />" +
    "</cross-domain-policy>\u0000";

この文字列は次のように送信されます。

if (message.Contains("policy-file-request"))
            {
                client.Send(Encoding.ASCII.GetBytes(Statics.POLICY_FILE));
                return;
            }

これが機能していたと確信していますが、何が起こったのか本当にわかりません。フラッシュ クライアントがサーバーからこのメッセージを受信すると、接続は成功し、すべてが順調に進んでいます。しかし今、フラッシュ クライアントは 20 秒間待機し (フラッシュ ソケットのタイムアウト)、セキュリティ例外をスローします。

[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]

行き詰まり、先に進めません。ポート 963 をリッスンしています。サーバー マシンの完全修飾名は「mypc.domain.local」で、ネットワーク経由でアクセスできます。このマシンでは IIS も実行されており、フラッシュ アプリケーションはここでホストされています。

http://mypc.domain.local:90/page.html 

これが方法です。フラッシュアプ​​リケーションを呼び出して、

mypc.domain.local:963

実行中のサーバーのアドレスです。私もこのマシンで作業しています。ページを呼び出してみhttp://localhost:90/page.htmlたりhttp://127.0.0.1:90/page.html、localhost:963 または 127.0.0.1:963 としてサーバーへの接続を試みたりしました。どの組み合わせでも同じ結果。

ここで何が問題なのですか?私の作業コードが壊れた原因は何ですか?

ありがとう。

4

1 に答える 1

0

コードを追加せずに判断するのは難しいですが、あなたが示したことに基づいて、そのリクエストが来ると、実際の有効な HTTP レスポンスではないポリシー ファイルの内容で応答するようです。20 秒のタイムアウトについての私の推測では、HTTP ヘッダーをまだ待っているということです。

可能であれば、http を「手動で」実行する代わりに、BCL に既に存在する HTTP クラスを使用してみてください。

于 2012-06-27T23:33:31.460 に答える