IHttpHandler и перейдите на страницу с помощью PageParser.GetCompiledPageInstance

Я пытаюсь сделать простой HttpHandler, который проверяет некоторые вещи (безопасность - хотя это неважно) и продолжает переход на страницу. Это должно быть просто, но у меня, очевидно, один или оба параметра GetCompiledPageInstance неверны:

public void ProcessRequest(HttpContext context)
{
    if (CheckAccess(context))
        PageParser.GetCompiledPageInstance(context.Request.Path, context.Request.PhysicalPath, context);
}

public bool IsReusable { get { return false; } }

private bool CheckAccess(HttpContext context)
{
    return true;
}

Это веб-сайт, а не приложение, хотя я не думаю, что это имеет значение.

Когда я добавляю код обработчика в веб-конфигурацию

<add name="SecurityHandler" verb="*" path="*.aspx" type="SecurityHandler" />

Теперь я получаю сообщение об ошибке, которого не было до добавления (никаких других изменений):

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

Не бери в голову. Нашел ответ на эту вторую часть: Проблема с HttpHandler и состоянием сеанса

реализовать IRequiresSessionState в обработчике


person Outside the Box Developer    schedule 17.03.2013    source источник
comment
Я считаю, что вторым параметром в GetCompiledPageInstance должно быть просто имя файла, а не имя файла И путь. Попробуйте использовать System.IO.Path.GetFileName (context.Request.PhysicalPath);   -  person David    schedule 18.03.2013


Ответы (1)


Пытаться:

    PageParser.GetCompiledPageInstance(context.Request.Path, context.Request.PhysicalPath, context )
         .ProcessRequest( context );
person Wiktor Zychla    schedule 17.03.2013