Сессия отличается, если Flash загружает фотографию на страницу aspx - PullRequest
1 голос
/ 17 марта 2011

У меня есть aspx с именем user-photo-upload.aspx и еще один aspx с именем get-photo.aspx. Я установил Session ["PhotoId"] в методе page_load пользователя-photo-upload.aspx.

Если я обычно захожу в user-photo-upload.aspx через браузер, сеанс можно получить в get-photo.aspx. Но если флэш-память загружает фотографию на страницу user-photo-upload.aspx, я не могу получить сеанс ["PhotoId"] в get-photo.aspx.

Я обнаружил, что идентификатор сессии отличается при обычном посещении страницы или с помощью браузера. Я не знаю, почему Flash использует другой сеанс.

Что мне делать?

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Плагин Flash действует как отдельный клиент, поэтому и браузер, и плагин, получающие индивидуальные идентификаторы сеанса, ожидаемое поведение.

Вам придется обойти эту проблему, установив исходный идентификатор сеанса в качестве переменной во Flash-фильме, либо в виде FlashVar, либо через JavaScript, а затем отправив его в качестве параметра GET на сервер вместе с первым запросом.выдан и заменен новым идентификатором, созданным для клиента Flash, на идентификатор, предоставленный серверу.

Этот вопрос относится к той же проблеме в Java, возможно, он может помочь вамрешить вашу проблему.

0 голосов
/ 12 февраля 2014

У нас была такая же проблема с 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, чтобы принимать идентификаторы сеанса из запроса:

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);
    }
}
...