首页 新闻 搜索 专区 学院

Http管道IHttpModule、HttpHandler和接口结合的问题

0
悬赏园豆:100 [已关闭问题] 关闭于 2015-11-12 12:49

具体描述我也不太清楚,我是从博客园里面的老赵的博客看到两篇文章,然后根据上面的内容 自己把代码写下来,并运行实现,到最后有个问题点没指出来,因为老赵说太简单了,就没继续说了,但是还是把我难倒了,我参照的代码如下:

public class FilterForbiddenWordModule : IHttpModule

{

  void IHttpModule.Dispose() { }

  public void Init(HttpApplication context)

  {

    context.PostMapRequestHandler += EventHandler(context_PostMapRequestHandler);

  }

  void context_PostMapRequestHandler(object sender, EventArgs e){

    var context = (sender as HttpApplication).Context; 

    var handlerType = context.Handler.GetType();
    //这里该怎么写 怎么改 不得而知
  }

  private static PropertyInfo s_isReadOnlyPropertyInfo;

  static FilterForbiddenWordModule(){

    Type type = typeof(NameObjectCollectionBase);
    s_isReadOnlyPropertyInfo = type.GetProperty("IsReadOnly",     BindingFlags.NonPublic | BindingFlags.Instance);
  }

  public class ForbiddenWord

  {
    public static string Filter(string original)
    {
      return original.Replace("FORBIDDEN_WORD", "**");
    }
  }
  public enum FilterForbiddenWordType
  {
    Ignored,
    Normal,
    Json,
    Html
  }

 

  

//这个是博主说不用自定义属性 改用接口实现方式 所以这个我就取消了

  //private static void ProcessCollection(NameValueCollection collection,FilterForbiddenWordAttribute filter)

  //{

  // var copy = new NameValueCollection();
  // foreach (var key in collection.AllKeys)
  // {
  // var filterType = (filter == null) ? FilterForbiddenWordType.Normal :     filter.GetFilterType(key);
  // Array.ForEach(collection.GetValues(key), v => copy.Add(key,   ForbiddenWord.Filter(v)));
  // }
  //}

}

 

 

 

而Page页面就是加了一个跟博客内容类似的页面

public partial class Default : System.Web.UI.Page, IForbiddenWordFilter
{
    ...

    FilterForbiddenWordType IForbiddenWordFilter.GetFilterType(string key)
    {
        if (key.EndsWith(this.txtPassword.ID)) return FilterForbiddenWordType.Ignored;
        return FilterForbiddenWordType.Normal;
    }
}

 


但是问题就是当页面打开时,我要实现过滤操作 我还要改点什么?
沉睡的木木夕的主页 沉睡的木木夕 | 初学一级 | 园豆:17
提问于:2015-10-15 13:03
< >
分享
所有回答(1)
0

http://www.cnblogs.com/robot/archive/2008/07/22/1248679.html

很早前写的文章,可以看看有没有帮助

I,Robot | 园豆:9583 (大侠五级) | 2015-10-16 06:44

您好,谢谢的回复,我看了您的文章,您写的那些内容我想我理解了,从页面接受请求进行相应的你想要的做的处理。我想了我这边的问题,当页面请求时,先处理自定义的HttpModule,而Page里面的接口签名的实现是在这之后的,我要怎么结合Page中的GetFilterType方法的返回类型与我的Module结合处理,才能达到老赵说的动态过滤呢? 不知道我的盲点在那?希望您能指出来 我去学习 然后看能否自己解决

支持(0) 反对(0) 沉睡的木木夕 | 园豆:17 (初学一级) | 2015-10-16 10:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册