«Состояние сеанса недоступно в этом контексте», когда несколько файлов в запросе - PullRequest
1 голос
/ 22 февраля 2012

Пример кода на http://support.microsoft.com/kb/2527105 - это именно то, что мне нужно для обмена сеансами между двумя поддоменами.Единственная проблема - это не работает в реальной жизни.Он отлично работает, когда запрашивается только один файл - это сама страница, но выдает ошибку «состояние сеанса недоступно в этом контексте», когда другие файлы являются частью запроса, например, если я добавляю на страницу таблицы стилей или файлы javascript.Код генерирует эту ошибку в строке «if (context.Session! = Null &&» ниже:

void context_PostRequestHandlerExecute(object sender, EventArgs e)
{
    HttpApplication context = (HttpApplication)sender;
    HttpCookie cookie = context.Response.Cookies["ASP.NET_SessionId"];

    if (context.Session != null &&
        !string.IsNullOrEmpty(context.Session.SessionID))
    {
        cookie.Value = context.Session.SessionID;
        if (rootDomain != "localhost")
        {
            cookie.Domain = rootDomain;
        }
        cookie.Path = "/";
    }
}

1 Ответ

1 голос
/ 19 марта 2012

Вы можете попробовать Try Catch Block, затем вы можете перехватить нулевое значение.

    private HttpSessionState GetSession(HttpApplication context)
    {
        try
        {
            //On Abadon or Logout this returns "Session state is not available in this context. "
            return context.Session;
        }
        catch (HttpException)
        {
            return null;
        }
    }
...