Проблема с HttpHandler и состоянием сеанса
Я пытаюсь создать решение, которое будет имитировать 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 или пользовательский модуль состояния сеанса включен в <configuration> \ < system.web> \ <httpModules> в конфигурации приложения. "
У нас все переменные сеанса хранятся в SQL, но мы не уверены, что это влияет на это или нет.
Я видел других людей, у которых были подобные ошибки, и ответ, который им дали, был то, что вам нужно было добавить ProcessRequest (контекст), чтобы обойти это.
мысли, комментарии, предложения?
Благодарю.