Получить объект сеанса из sessionID в ASP.Net - PullRequest
5 голосов
/ 05 ноября 2010

Есть ли способ получить объект сеанса из sessionID?

У меня есть небольшой проект, использующий загрузку Flash, чтобы позволить пользователю загрузить свой файл на сервер, но проблема в том, что Flash имеетНекоторые ошибки при отправке сеанса и куки (в Firefox или Chrome, но не в IE), поэтому я нашел решение, чтобы решить эту проблему: отправив sessionID через Flash на сервер, а на сервере декодируем sessionID обратнок объекту сеанса, но я не знаю, как это сделать.Я использую ASP.NET и C #.

Может кто-нибудь посоветовать мне, что делать?

1 Ответ

4 голосов
/ 04 октября 2012

Ссылка, предложенная Moo-Juice, больше не работает.

Я использовал код, указанный на этой странице:

http://snipplr.com/view/15180/

Это сработало как шарм.

Если ссылка станет неработающей, вот код:

void Application_BeginRequest(object sender, EventArgs e)
{
    try
    {
        string session_param_name = "ASPSESSID";
        string session_cookie_name = "ASP.NET_SESSIONID";
        string session_value = Request.Form[session_param_name] ?? Request.QueryString[session_param_name];
        if (session_value != null) { UpdateCookie(session_cookie_name, session_value); }
    }
    catch (Exception) { }

    try
    {
        string auth_param_name = "AUTHID";
        string auth_cookie_name = FormsAuthentication.FormsCookieName;
        string auth_value = Request.Form[auth_param_name] ?? Request.QueryString[auth_param_name];

        if (auth_value != null) { UpdateCookie(auth_cookie_name, auth_value); }
    }
    catch (Exception) { }
}
void UpdateCookie(string cookie_name, string cookie_value)
{
    HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookie_name);
    if (cookie == null)
    {
        HttpCookie cookie1 = new HttpCookie(cookie_name, cookie_value);
        Response.Cookies.Add(cookie1);
    }
    else
    {
        cookie.Value = cookie_value;
        HttpContext.Current.Request.Cookies.Set(cookie);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...