1

user-photo-upload.aspx という名前の aspx と、get-photo.aspx という別の aspx があります。user-photo-upload.aspx の page_load メソッドに Session["PhotoId"] を設定しました。

通常、ブラウザから user-photo-upload.aspx にアクセスすると、get-photo.aspx でセッションを取得できます。しかし、フラッシュが写真を user-photo-upload.aspx ページにアップロードすると、get-photo.aspx で Session["PhotoId"] を取得できません。

通常ブラウザを使用してページにアクセスした場合とフラッシュでアクセスした場合で、セッション ID が異なることがわかりました。フラッシュが別のセッションを使用する理由がわかりません。

私は何をすべきか?

4

2 に答える 2

1

Flash プラグインは個別のクライアントとして機能するため、ブラウザーとプラグインの両方が個別のセッション ID を受け取ることが予期される動作です。

これを回避するには、元のセッション ID を Flash ムービーの変数として FlashVar または JavaScript を介して設定し、発行された最初のリクエストとともに GET パラメータとしてサーバーに送信し、新しいサーバーに与えられた ID を使用して Flash クライアント用に作成された ID。

この質問は、Java の同じ問題に関連しています。おそらく、問題の解決に役立つ可能性があります。

于 2011-03-17T16:26:25.603 に答える
0

Flash Uploader にも同じ問題がありました。これが私たちがそれを解決した方法です...

(1)session_id Flash Uploader のクライアント側の初期化コードに新しいパラメーターを追加しました。

<script type="text/javascript"> 
   var swfu<%=RandomId %>;
   $(document).ready(function() {
      swfu<%=RandomId %> = new SWFUpload({
    // Backend Settings
    upload_url: "./picupload.aspx",
    post_params : {                    
         "PictureCategory" : "<%= EncryptedPictureCategory() %>",
         "picture_id": "<%= EncryptedPictureId() %>",
         "session_id": "<%= HttpContext.Current.Session.SessionID %>"
     },
     // *snip* ...
</script>

(2) Session_Start メソッドを変更Global.asax.csして、リクエストからセッション ID を受け入れるようにしました。

protected void Session_Start(Object sender, EventArgs e)
{
    if (Request["session_id"] != null)
    {
        bool isRedirected, isCookieAdded;
        string oldSessionId = Request["session_id"];
        SessionIDManager manager = new SessionIDManager();
        manager.RemoveSessionID(HttpContext.Current);
        manager.SaveSessionID(HttpContext.Current, oldSessionId, out isRedirected, out isCookieAdded);
    }
    else
    {
        Response.Redirect(LoginPagePath);
    }
}
于 2014-02-12T09:00:28.473 に答える