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" />
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步