dottext中HttpHandler的一些分析


<HttpHandler pattern="/rss\.aspx$" type="Dottext.Common.Syndication.RssHandler, Dottext.Common" handlerType="Direct" />

-->RssHandler

-->BaseSyndicationHandler:ProcessRequest()

-->其中CurrentBlog = Config.CurrentBlog(context);

     这个CurrentBlog变量经常使用,比较关键,经过一系列的类初始化后,最后实际调用的是

-->SqlDataProvider:

public IDataReader GetConfigByApp(string app)

{

SqlParameter[] p =

{

SqlHelper.MakeInParam("@Application",SqlDbType.NVarChar,50,app)

};

return GetReader("blog_GetConfigByApp",p);

}

如果访问的是某人的blog的rss.aspx连接,这里的app就是用户名了,像我就是"lwj"

-->返回ProcessRequest函数处理,接下看 ProcessFeed();

     RssHandler:ProcessFeed()

-->其中RssWriter writer = new RssWriter(Entries.GetEntryCollection(query));

     跟踪可知,GetEntryCollection()函数调用了存储过程"blog_GenericGetEntries_10",取得blog的内容,

每一项内容为一个entry,最后得到的是entry collection

     然后初始化writer,这是RSS显示为XML的关键

     
-->RssWriter继承自BaseRssWriter,后者又继承自BaseSyndicationWriter,后者又继承自XmlTextWriter

     代码比较简单,不过是string输出

-->返回ProcessRequest函数处理,接下来WriteFeed();输出页面,至此完成

接下来有好几个HttpHandler都是差不多的结构,没有细看

---------------------------------------------------

<HttpHandler pattern="/BlogSearch\.aspx$" controls="BlogSearch.ascx" />

-------------------------------------------

<HttpHandler pattern="/(?:admin)" type="Dottext.Web.UI.Handlers.BlogExistingPageHandler, Dottext.Web" HandlerType="Factory" />

原文地址:https://www.cnblogs.com/lwj/p/307557.html