2010-12-01 2 views
0

Я пытаюсь перехватить все запросы aspx. Перехват работает, но страница остается пустой. Что мне не хватает?Перехват * .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

Вы недостающие некоторые приняли ответы на других ваши вопросы. – 2010-12-01 16:18:16

ответ

2

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

http://odetocode.com/Articles/112.aspx
What is the difference between HttpContext.Current.Response and Page.Response?
http://www.c-sharpcorner.com/uploadfile/desaijm/asp.netposturl11282005005516am/asp.netposturl.aspx

0

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

0

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

The 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); 
    } 
} 

check out my previous post on the subject

Смежные вопросы