Перехват * .aspx - PullRequest
       21

Перехват * .aspx

0 голосов
/ 01 декабря 2010

Я пытаюсь перехватить все запросы aspx Перехват работает, но страница остается пустой. Чего мне не хватает?

namespace WebSite
{
    public class Class1 : IHttpHandler
    {
        public bool IsReusable
        {
            get { return true; }
        }

        public void ProcessRequest(HttpContext context)
        {

        }
    }
}

<system.webServer>
    <handlers>
      <add name="SampleHandler" verb="*"
        path="*.aspx"
        type="WebSite.Class1, WebSite"
        resourceType="Unspecified" />
    </handlers>
  </system.webServer>

Ответы [ 3 ]

2 голосов
/ 01 декабря 2010

Вы перехватываете запрос страницы, тогда вы ничего не делаете с ним.Если вы ожидаете увидеть какой-то вывод, вам необходимо выполнить какие-то манипуляции с передаваемым HttpContext. Ниже приведена пара статей, которые могут быть полезны при работе с HttpContext.Короче говоря, если вы ожидаете увидеть ответ, вы должны сгенерировать что-то для него.

http://odetocode.com/Articles/112.aspx
В чем разница между HttpContext.Current.Response и Page.Ответ http://www.c -sharpcorner.com / uploadfile / desaijm / asp.netposturl11282005005516am / asp.netposturl.aspx

0 голосов
/ 01 декабря 2010

Я использовал интерфейс IhttpHandler для обработки возврата моего изображения.

IHttpHandlerFactory - это то, что я использую для обработки перехвата страницы:

public class HttpCMSHandlerFactory : IHttpHandlerFactory
{
    // collects page name requested
    string pageName = Path.GetFileNameWithoutExtension(context.Request.PhysicalPath);
    // Add the page name to the context
    context.Items.Add("PageName", pageName);
    // I can still check if the page physically exists else pass on to my CMS handler: CMSPage.aspx
    FileInfo fi = new FileInfo(context.Request.MapPath(context.Request.CurrentExecutionFilePath));
    if (fi.Exists == false)
    {
        // if page doesnt exist context info is passed on to CMSPage to handle copy
        return PageParser.GetCompiledPageInstance(string.Concat(context.Request.ApplicationPath, "/CMSPage.aspx"), url, context);
    }
    else
    {
        // if page exist physical page is returned
        return PageParser.GetCompiledPageInstance(context.Request.CurrentExecutionFilePath, fi.FullName, context);
    }
}

проверить мой предыдущий пост на эту тему

0 голосов
/ 01 декабря 2010

Вы на самом деле не перехватываете их.Это больше похоже на угон их.Каждый запрос * .aspx будет идти к этому обработчику, а не к реальной странице * .aspx.Более подходящим способом будет поиск обработчика Application_BeginRequest в global.asax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...