精彩专题推荐:建站之入门课 建站之必修课 建站之关键课 网站价值所在 流量提高专题 css+div 标准 个人网站打造全过程
返回建站学首页
导航:
建站首页 | 网站设计 | 网站开发 | 网站运营 | 网页软件 | 建站指南 | 搜索优化 | 图像处理 | 视频教程 | 书籍教程 | 建站专题
当前位置:首页>网站开发>asp.net教程>正文

Asp.Net 构架(IHttpHandler) - Part.2


来源:博客圆 时间:07-10-11 点击: 点击这里收藏本文

而实际上,IRequiresSessionState的接口定义是这样的:

     public interface IRequiresSessionState

{

}

可见,这个接口没有任何需要实现的方法或属性,大家只要记得:如果想在HttpHandler中使用SessionState,必须实现这个接口,实际上也就是在类的标头将这个接口加进去。

Step.3 新建一个ImageCode.aspx页面,在HTML代码中写下:
     <img src="Handler.ashx" alt="图片验证码" />

OK,在浏览器中打开ImageCode.aspx,应该可以看到如下所示:

利用HttpHandler创建自定义后缀Rss源
RSS如今已经可以说是随处可见,而RSS的实现方式,通常是在一个.aspx的CodeBehind文件中写一个XML文件,然后加载到Response的OutputStream中, Rss源通常是Rss.aspx这种形式的。通过第一章学到的ISAPI的知识,再结合本章学到的关于HttpHandler的知识,很容易想到:我们可以自定一个以 .rss 作为后缀名的文件来实现 Rss 源,比如说Article.rss。现在我们就一步步来实现它:

NOTE:关于RSS的更多内容,可以参阅我编译的《在Web站点中创建和使用RSS源》。本文不再解释Rss是什么,如何创建Rss源,为了文章的独立性,仅给出创建过程。

Step.1 创建范例数据库
Create Table RssSample

(

    SampleId     Int Identity(1,1)       Not Null,

    Title            Varchar(100)         Not Null Constraint uq_Title Unique,

    Author           Varchar(50)               Not Null,

    PubDate          DateTime             Not Null Default GetDate(),

    [Description]    Varchar(500)         Not Null,

    Link         Varchar(150)         Not Null

 

    Constraint pk_RssSample Primary Key(SampleId)

)

-- 插入范例数据

Insert Into RssSample(Title, Author, [Description], Link)

Values('标题1', '作者1', '文章摘要1', 'http://127.0.0.1/#' )

 

-- 省略 ....

Step.2 建立站点,在App_Code目录下建立RssFeedsLib.cs文件。
using System;

using System.Data;

using System.Data.SqlClient;

using System.IO;

using System.Web;

using System.Xml;

using System.Text;

 

namespace RssFeadsLib {

    public class RssGenerator {

         public static string GetRSS() {

             MemoryStream ms = new MemoryStream();

             XmlTextWriter writer = new XmlTextWriter(ms, null);

             SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=Sample;User ID=sa;Password=sa");      //修改这里成你的数据库连接

             SqlCommand cmd = new SqlCommand("select * from RssSample order by pubdate desc", conn);

 

             conn.Open();

             SqlDataReader reader = cmd.ExecuteReader();

             writer.WriteStartElement("rss");

             writer.WriteAttributeString("version", "2.0");

             writer.WriteStartElement("channel");

             // Channel 下的结点静态写入

             writer.WriteElementString("title", "TraceFact.Net 技术文章");

             writer.WriteElementString("link", "http://www.jzxue.com");

             writer.WriteElementString("description", "Dedicated to asp.net...");

             writer.WriteElementString("copyright", "Copyright (C) 2007");

             writer.WriteElementString("generator", "My RSS Generator");

             // Item 结点从数据库读取

             while (reader.Read()) {

                 writer.WriteStartElement("item");

                 writer.WriteElementString("author", reader.GetString(reader.GetOrdinal("Author")));

                 writer.WriteElementString("title",                 reader.GetString(reader.GetOrdinal("title")));

                 writer.WriteElementString("link", reader.GetString(reader.GetOrdinal("Link")));

                 writer.WriteElementString("description", reader.GetString(reader.GetOrdinal("Description")));

                 writer.WriteElementString("pubDate", reader.GetDateTime(reader.GetOrdinal("PubDate")).ToString(@"ddd, dd MMM yyyy 12:00:00 tt "));

                 writer.WriteEndElement();

             }

 

             writer.WriteEndElement();

             writer.WriteEndElement();

             reader.Close();

             conn.Close();

 

             writer.BaseStream.Flush();

             writer.Flush();

             ms.Flush();

 

             // 将流转换成String并返回

             byte[] data = new byte[ms.Length];

             ms.Seek(0, SeekOrigin.Begin);

             ms.Read(data, 0, data.Length);

             ms.Close();

             return UTF8Encoding.UTF8.GetString(data);

         }

    }

}

9 7 3 1 2 3 4 5 4 8 :

  把此文章收藏到:          
广而告之
文章搜索
  • Google JZxue.Com

关于我们 | 联系我们 | 友情链接 | 网站地图
Copyright © 2005 - 2006 建站学 All rights reserved.