Проблема с HttpHandler и состоянием сеанса - PullRequest
2 голосов
/ 03 сентября 2010

Я пытаюсь создать решение, которое будет имитировать App_Offline.htm для удаленного доступа, но все же позволит локальным пользователям тестировать веб-сайт.Я нашел несколько различных опций, которые я пробую, но, кажется, лучший из них не работает для нашего сайта ASP.NET (2.0), который зависит от состояния сеанса, включенного на всех страницах.

HttpHandlerдобавляется в web.config

<add verb="*" path="*.aspx" type="AppOffline.AppOfflineHandler, AppOffline" />

и, когда класс вызывается, сводится к следующему:

public void ProcessRequest( HttpContext context )
{
    this.context = context;

    // offline mode and remote request?
    if ( !context.Request.IsLocal &&
        IsOffline
        )
    {
        context.Response.Clear();
        context.Response.Write( AppOffline );

        context.Response.End();
    }
    else
        // redirect to the default processing pipe
        PageParser.GetCompiledPageInstance(
            context.Request.Path,
            context.Request.PhysicalPath,
            context ).ProcessRequest( context );
}

Проблема в PageParser.GetCompiledPageInstance.На любой странице, которую я сейчас открываю на нашем веб-сайте, я получаю следующее сообщение об ошибке:

"Состояние сеанса может использоваться, только если для enableSessionState задано значение true, либо в файле конфигурации, либо в директиве Page.Также убедитесь, что System.Web.SessionStateModule или пользовательский модуль состояния сеанса включены в раздел \ \ в конфигурации приложения. "

Мывсе переменные нашего сеанса хранятся в SQL, но я не уверен, что это влияет на него.

Я видел других людей, у которых были похожие ошибки, и они получили ответ, что вам нужно было добавитьProcessRequest (контекст), чтобы обойти это.

мысли, комментарии, предложения?

спасибо.

1 Ответ

9 голосов
/ 03 сентября 2010

Вы реализовали IRequiresSessionState в своем обработчике?

...