小弟是新人,昨天写了一个继承借口HttpHandler接口的类想实现过滤器对index下的所有aspx文件的session的信息过滤代码如下
public class Class1:IHttpHandler,IReadOnlySessionState
{
public Class1()
{
}
    #region IHttpHandler 成员    public bool IsReusable
    {
        get { return false; }
    }    public void ProcessRequest(HttpContext context)
    {
        if (context.Session["User"] == null)
        {
            context.Response.Redirect("~/Default.aspx");
        }
        else
        {
            context.Response.Redirect("~/index/Default2.aspx");
        }
    }
这是配置文件:
                  <httpHandlers>
<add verb="*" type="Class1" path="index/*.aspx"/>
</httpHandlers>可是我发现即使session["User"]不为空的时候,在跳转到index下任何aspx页面的时候都会出问题,url的地址没错,但是页面里什么都不显示就像是一张白纸。
似乎所有的信息都让Class1的这个类给截断了一样。。希望高手们帮帮忙。我的分不多,希望好人多多帮助。

解决方案 »

  1.   

    ProcessRequest你看下这个方法里面能取到session不
    我记得好像这个方法里面取不到。
    我一般是用httpmodule进行过滤,用AcquireRequestState方法可以取到sessionpublic void Init(HttpApplication context) 

       context.AcquireRequestState+=new EventHandler(Reurl_AcquireRequestState);

    private void Reurl_AcquireRequestState(object sender,EventArgs e) 

    HttpApplication application = (HttpApplication)sender; 
    HttpContext context = application.Context;
    (context.Session["User"] != null) 
    { } 
    }
      

  2.   

    我继承了IReadOnlySessionState 接口 可以读取session的值,如果利用HttpModule的话如何对特定文件夹下的aspx文件来过滤呢?
      

  3.   

    继承下 HttpModule 试试看
      

  4.   

    后来怎么解决的呢!这个帖子有些时间了,我用的是这个
    context.Response.WriteFile(context.Request.PhysicalPath);
    但是页面上如果有用户控件,是不显示的!