﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-GSpring</title><link>http://www.cnblogs.com/GSpring/</link><description>正式启动 :  I.博客&amp;nbsp;www.iblogs.cn</description><language>zh-cn</language><lastBuildDate>Fri, 16 May 2008 03:40:55 GMT</lastBuildDate><pubDate>Fri, 16 May 2008 03:40:55 GMT</pubDate><ttl>60</ttl><item><title>招聘dotNet网站、增值开发、嵌入式开发人员(武汉地区应聘者优先)</title><link>http://www.cnblogs.com/GSpring/archive/2008/04/30/1177297.html</link><dc:creator>Chep</dc:creator><author>Chep</author><pubDate>Wed, 30 Apr 2008 02:44:00 GMT</pubDate><guid>http://www.cnblogs.com/GSpring/archive/2008/04/30/1177297.html</guid><wfw:comment>http://www.cnblogs.com/GSpring/comments/1177297.html</wfw:comment><comments>http://www.cnblogs.com/GSpring/archive/2008/04/30/1177297.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/GSpring/comments/commentRss/1177297.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/GSpring/services/trackbacks/1177297.html</trackback:ping><description><![CDATA[<P>本公司因业务发展需要，急需以下人才：<BR>1.Asp.net 开发人员3名,本科以上学历，1年以上asp.net 开发经验,熟悉dotnet平台,精通c#语言,对于web part,webservices,windows remote,ajax等技术比较熟悉,有过门户或社区、移动增值服务开发经验的优先,硕士(包括)以上学历者,只要对于以上技术和平台熟悉,可以不受工作年限限制，欢迎优秀的毕业生加盟</P>
<P><FONT color=#ff0000><STRONG>2.（本次招聘重点）嵌入式系统开发人员3名，熟悉一种以上嵌入式系统开发（windows mobile、wince、linux，mac os 等），本科以上学历，有相关嵌入式工作经验者及硕士(包括)以上学历者优先，欢迎优秀毕业生加盟</STRONG></FONT></P>
<P>以上开发人员硕士(包括)以上学历者,只要对于以上技术和平台熟悉,可以不受工作年限限制，有相关行业工作经验的优秀人才可以适当放宽相关条件限制，本公司是一个相当有潜力的公司，只要有能力，公司将提供有竞争力的薪酬待遇，具体情况我们可以面谈，如有意可以与我联系：<BR>邮箱：<A href="mailto:chep_info@sohu.com"><FONT color=#009933>chep_info@sohu.com</FONT></A>&nbsp;&nbsp; QQ:5599600（请注明应聘，联系前请务必先发简历到邮箱，谢谢）请将详细简历发至我的邮箱，我会与您主动联系，谢谢！<BR>公司网址：<A href="http://www.naturest.cn">www.naturest.cn</A> <BR>工作地：武汉、上海 <FONT color=#ff0000 size=4><STRONG>武汉地区应聘者优先</STRONG></FONT></P><img src ="http://www.cnblogs.com/GSpring/aggbug/1177297.html?type=1" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://GSpring.cnblogs.com/" target="_blank">Chep</a> 2008-04-30 10:44 <a href="http://www.cnblogs.com/GSpring/archive/2008/04/30/1177297.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>武汉公司招聘asp.net开发人员及嵌入式c/c++开发人员</title><link>http://www.cnblogs.com/GSpring/archive/2007/11/11/955805.html</link><dc:creator>Chep</dc:creator><author>Chep</author><pubDate>Sun, 11 Nov 2007 03:23:00 GMT</pubDate><guid>http://www.cnblogs.com/GSpring/archive/2007/11/11/955805.html</guid><wfw:comment>http://www.cnblogs.com/GSpring/comments/955805.html</wfw:comment><comments>http://www.cnblogs.com/GSpring/archive/2007/11/11/955805.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/GSpring/comments/commentRss/955805.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/GSpring/services/trackbacks/955805.html</trackback:ping><description><![CDATA[<P>本公司因业务发展需要，先需要以下人才：<BR>1.asp.net 开发人员,2年以上asp.net 开发经验,熟悉dotnet平台,精通c#语言,对于web part,webservices,windows remote,ajax等技术比较熟悉,有过门户或社区开发经验的优先,硕士(包括)以上学历者,只要对于以上技术和平台熟悉,可以不受工作年限限制</P>
<P>2.linux c++开发人员，2年以上c++开发经验，擅长软件UI开发，有过手机linux开发经验者优先，了解OPEN GL ，了解手机（移动设备）嵌入式开发，硕士(包括)以上学历者,只要对于以上技术和平台熟悉,可以不受工作年限限制</P>
<P>以上开发人员硕士(包括)以上学历者,只要对于以上技术和平台熟悉,可以不受工作年限限制，本公司是一个相当有潜力的公司，只要有能力，公司将提供有竞争力的薪酬待遇，具体情况我们可以面谈，如有意可以与我联系：<BR>邮箱：<A href="mailto:chep_info@sohu.com">chep_info@sohu.com</A>&nbsp;&nbsp; QQ:5599600（请注明应聘）请将详细简历发至我的邮箱，我会与您主动联系，谢谢！</P><img src ="http://www.cnblogs.com/GSpring/aggbug/955805.html?type=1" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://GSpring.cnblogs.com/" target="_blank">Chep</a> 2007-11-11 11:23 <a href="http://www.cnblogs.com/GSpring/archive/2007/11/11/955805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ceshi</title><link>http://www.cnblogs.com/GSpring/archive/2006/02/11/ceshi.html</link><dc:creator>Chep</dc:creator><author>Chep</author><pubDate>Sat, 11 Feb 2006 13:08:00 GMT</pubDate><guid>http://www.cnblogs.com/GSpring/archive/2006/02/11/ceshi.html</guid><wfw:comment>http://www.cnblogs.com/GSpring/comments/329033.html</wfw:comment><comments>http://www.cnblogs.com/GSpring/archive/2006/02/11/ceshi.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/GSpring/comments/commentRss/329033.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/GSpring/services/trackbacks/329033.html</trackback:ping><description><![CDATA[ceshi <img src ="http://www.cnblogs.com/GSpring/aggbug/329033.html?type=1" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://GSpring.cnblogs.com/" target="_blank">Chep</a> 2006-02-11 21:08 <a href="http://www.cnblogs.com/GSpring/archive/2006/02/11/ceshi.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iblogs博客程序1.0版</title><link>http://www.cnblogs.com/GSpring/archive/2005/07/18/194895.html</link><dc:creator>Chep</dc:creator><author>Chep</author><pubDate>Mon, 18 Jul 2005 02:08:00 GMT</pubDate><guid>http://www.cnblogs.com/GSpring/archive/2005/07/18/194895.html</guid><wfw:comment>http://www.cnblogs.com/GSpring/comments/194895.html</wfw:comment><comments>http://www.cnblogs.com/GSpring/archive/2005/07/18/194895.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/GSpring/comments/commentRss/194895.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/GSpring/services/trackbacks/194895.html</trackback:ping><description><![CDATA[研究博客已经有一段时间了，在短短的一年时间了，博客这个概念在中国迅速蔓延，博客站点也雨后春笋般出现，现在开源的博客有很多，请看 <A href="http://www.iblogs.cn/OpenBlog/archive/2005/07/07/1253.html">http://www.iblogs.cn/OpenBlog/archive/2005/07/07/1253.html</A>一般站长在选择博客程序时都会根据自己的实际情况和技能选择自己熟悉语言开发的博客，这样便于自己维护和修改，而我是典型的 ASP.NET 专业户，所以选择了 dottextweb，最开始是在博客园取得了汉化版 0.95，0.96，宝玉版，offby 版这些都研究过，其实大同小异，每次的升级都是修改了些bug，多了些汉化，其核心基本没变过，当时博客园是最好的博客开源探讨的地方，随着时间的推移，博客园也渐渐转向正轨专注于.net技术，而博客开源的功能渐渐淡化了，现在它已经成为了比较好的 .net社区，而我则想继续研究博客，一般来说我市研究的多，而写作和修改相对较少，这也与工作忙有关系，我觉得我们进行博客系统开发时应改放开思路，不要一味的从技术角度去考虑，多从市场和用户需要去考虑（当然专门做技术研究的就不用说了），后来建了个博客站点，就是现在的 <A href="http://gspring.cnblogs.com/admin/">http://gspring.cnblogs.com/admin/</A> 发现当你真正想逃开技术去做运营时，技术对你来说没什么帮助，这也是现在很多技术人员创建网站，然后慢慢都销声匿迹的原因，保守的估计一下，就算中国网民 10% 是做IT技术的，你的站点如果仅仅从 技术人员这方面考虑，那么你的市场是多么的狭小，所以我现在感觉，技术人员，如果真相做个好的网站，前期准备了一定的技术后，后面一定要从用户的角度来考虑知道你的研发，这种情况下，更多是用户思维指导你的技术开，而不是你的技术研发来左右用户思维。说了这么多，我是想告诉继续做这种博客研发的朋友，一定要找到自己的出发点：技术研究或是想做网站。根据这个原则，我希望大家能够共同完进行博客的研究，技术、市场共同发展。、 
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在这一版的博客程序中，做了如下改动：</P>
<P>1、进一步汉化了原来的程序，也许还有遗漏 <BR>2、修改了主界面风格 <BR>3、修改了部分隐藏错误 <BR>4、增加了右键收藏功能 <BR>5、增添了一些小功能、 <BR>6、增加了一个http上传功能，很简单主要解决部分时候ftp不能上传得问题 <BR>7、把论坛增加了进来，但是还没有集成进系统中 </P>
<P>下一步需要做的：</P>
<P>团队博客、二级域名、整合论坛、增加skin等，其中前两项博客园已经实现，但现在还没有公开源码，我想这些都不是很难，有兴趣的朋友可以联系我，我们自己开发出该模块</P>
<P>&nbsp;</P>
<P>好了下面是博客源码下载地址：<A href="http://www.iblogs.cn/chep/archive/2005/07/18/1477.html">下载</A></P><img src ="http://www.cnblogs.com/GSpring/aggbug/194895.html?type=1" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://GSpring.cnblogs.com/" target="_blank">Chep</a> 2005-07-18 10:08 <a href="http://www.cnblogs.com/GSpring/archive/2005/07/18/194895.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>求一问题的解决方法</title><link>http://www.cnblogs.com/GSpring/archive/2005/06/10/172177.html</link><dc:creator>Chep</dc:creator><author>Chep</author><pubDate>Fri, 10 Jun 2005 13:02:00 GMT</pubDate><guid>http://www.cnblogs.com/GSpring/archive/2005/06/10/172177.html</guid><wfw:comment>http://www.cnblogs.com/GSpring/comments/172177.html</wfw:comment><comments>http://www.cnblogs.com/GSpring/archive/2005/06/10/172177.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/GSpring/comments/commentRss/172177.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/GSpring/services/trackbacks/172177.html</trackback:ping><description><![CDATA[在这里我请大家帮我解决一个问题，先谢谢大家了，问题如下：<BR><BR>在c#中如何判断一个字符串的长度，要求这个长度以英文字符为准（一个汉字算两个长度），即，比如我要判断字符串：&#8220;我的长度&#8221; 那么得到他的长度为 8，字符串：&#8220;my length&#8221; 长度为 9 （中间有个空格），自符串：&#8220;我的length&#8221; 长度为 10，请问各位怎么做<BR><BR>借首页放一下，打扰大家了<IMG src="http://www.cnblogs.com/Emoticons/emsmile.gif" align=absMiddle border=0><img src ="http://www.cnblogs.com/GSpring/aggbug/172177.html?type=1" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://GSpring.cnblogs.com/" target="_blank">Chep</a> 2005-06-10 21:02 <a href="http://www.cnblogs.com/GSpring/archive/2005/06/10/172177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.TEXT 修改 二</title><link>http://www.cnblogs.com/GSpring/archive/2005/05/29/164632.html</link><dc:creator>Chep</dc:creator><author>Chep</author><pubDate>Sun, 29 May 2005 13:32:00 GMT</pubDate><guid>http://www.cnblogs.com/GSpring/archive/2005/05/29/164632.html</guid><wfw:comment>http://www.cnblogs.com/GSpring/comments/164632.html</wfw:comment><comments>http://www.cnblogs.com/GSpring/archive/2005/05/29/164632.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/GSpring/comments/commentRss/164632.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/GSpring/services/trackbacks/164632.html</trackback:ping><description><![CDATA[<P>对于 \Dottext.Common\Config\MultipleBlogConfig.cs<BR>下的public override BlogConfig GetConfig(HttpContext context) 修改<BR>.........<BR><BR>if(appFromRequest=="")<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//chep对此进行修改,有待验证<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//app= context.Request.ApplicationPath.ToLower();</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(context.Request.IsAuthenticated)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app = Security.GetCurrentUserName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app= context.Request.ApplicationPath.ToLower();</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appFromRequest = Globals.GetBlogAppFromRequest(context.Request.RawUrl.ToLower(),app);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR><BR>.......<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR></P><img src ="http://www.cnblogs.com/GSpring/aggbug/164632.html?type=1" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://GSpring.cnblogs.com/" target="_blank">Chep</a> 2005-05-29 21:32 <a href="http://www.cnblogs.com/GSpring/archive/2005/05/29/164632.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]防止盗链下载问题 </title><link>http://www.cnblogs.com/GSpring/archive/2005/05/28/164227.html</link><dc:creator>Chep</dc:creator><author>Chep</author><pubDate>Sat, 28 May 2005 10:42:00 GMT</pubDate><guid>http://www.cnblogs.com/GSpring/archive/2005/05/28/164227.html</guid><wfw:comment>http://www.cnblogs.com/GSpring/comments/164227.html</wfw:comment><comments>http://www.cnblogs.com/GSpring/archive/2005/05/28/164227.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/GSpring/comments/commentRss/164227.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/GSpring/services/trackbacks/164227.html</trackback:ping><description><![CDATA[转自：<A href="http://www.cnblogs.com/Daview/archive/2004/04/24/7436.aspx">http://www.cnblogs.com/Daview/archive/2004/04/24/7436.aspx</A><BR><BR>
<DIV>以下内容来自<A id=_ctl0__ctl10_TitleUrl href="http://blog.joycode.com/liuhuimiao/posts/18180.aspx">防止盗链下载问题</A>，作者<A id=_ctl0_Header1_HeaderTitle href="http://blog.joycode.com/liuhuimiao/"><FONT color=#000000>Think Different and Think More</FONT></A>，由于一时没有收藏，导致需要时找到，幸好在这里发布求助<A id=viewpost1_TitleUrl href="/daview/archive/2004/04/23/7340.aspx"><FONT color=#223355>求助一个BLOG的连接地址</FONT></A>获得了<A id=Comments1_CommentList__ctl0_NameLink href="http://cnblogs.com/Hover" target=_blank><FONT color=#223355>Hover</FONT></A>的帮助，又再现了原文。<BR><BR>由于飞刀（王洪超）的先例的原因，担心<A id=_ctl0__ctl10_TitleUrl href="http://blog.joycode.com/liuhuimiao/posts/18180.aspx">防止盗链下载问题</A>哪天不能访问，全转载如下：<BR><BR></DIV>
<DIV>
<H2><A id=_ctl0__ctl10_TitleUrl href="http://blog.joycode.com/liuhuimiao/posts/18180.aspx"><FONT color=#0000ff>防止盗链下载问题</FONT></A> </H2>
<DIV>&nbsp;&nbsp; 经常在网络上四处载东西，有时碰到直接拷贝一个类似http://193.100.100.56/TestWebSolution/WebApplication1/test.rar地址准备下载test.rar文件时，却被告知没有登录或者直接跳转到其他页面的情况，然后等登录后直接下载该文件。要实现上面情况，在.NET世界里是比较容易的。</DIV>
<DIV>1、&nbsp; 首先创建一个类库项目ClassLibrary1，实现如下(<A href="javascript:void(document.getElementById('div111').style.display='')">点这里查看</A>)：</DIV>
<DIV id=div111>
<P>
<TABLE cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR>
<TD vAlign=top width=568>
<DIV align=left>using System;</DIV>
<DIV align=left>using System.Web;&nbsp;&nbsp;&nbsp; // 引用System.Web组件</DIV>
<DIV align=left>&nbsp;</DIV>
<DIV align=left>namespace ClassLibrary1</DIV>
<DIV align=left>{</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp; public class MyHandler : IHttpHandler</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp; {</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public MyHandler()</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV>
<DIV align=left>&nbsp;</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #region IHttpHandler 成员</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void ProcessRequest(HttpContext context)</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 跳转到WebForm1.aspx，由WebForm1.aspx输出rar文件</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpResponse response = context.Response;</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp; response.Redirect("http://193.100.100.56/TestWebSolution/WebApplication1/WebForm1.aspx");</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV>
<DIV align=left>&nbsp;</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public bool IsReusable</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO:&nbsp; 添加 MyHandler.IsReusable getter 实现</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #endregion</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp; }</DIV>
<DIV align=left>}</DIV></TD></TR></TBODY></TABLE></P>
<DIV>&nbsp;</DIV></DIV>
<DIV>2、&nbsp; 创建测试用的Web项目WebApplication1。在配置文件Web.config文件<SYSTEM.WEB>节点里增加如下节点：</DIV>
<DIV align=left>&nbsp; &lt;httpHandlers&gt;</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;add verb="*" path="*.rar" type="ClassLibrary1.MyHandler, ClassLibrary1" /&gt;</DIV>
<DIV></< SPAN>httpHandlers&gt;</DIV>
<DIV>&nbsp;</DIV>
<DIV>3、&nbsp; 在WebForm1.aspx里增加一个文本为&#8220;下载&#8221;的Button，其Click事件如下(<A href="javascript:void(document.getElementById('div222').style.display='')">点这里查看</A>)：</DIV>
<DIV id=div222>
<P>
<TABLE cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR>
<TD vAlign=top width=568>
<DIV align=left>FileInfo file = new System.IO.FileInfo(@"G:\WebCenter\TestWebSolution\WebApplication1\test.rar");</DIV>
<DIV align=left>// FileInfo 类在 System.IO 命名空间里</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Clear();</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.AddHeader("Content-Disposition", "filename=" + file.Name);</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.AddHeader("Content-Length", file.Length.ToString());</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string fileExtension = file.Extension;</DIV>
<DIV align=left>&nbsp;</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 根据文件后缀指定文件的Mime类型</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (fileExtension)</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case ".mp3":</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.ContentType = "audio/mpeg3";</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case "mpeg":</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.ContentType = "video/mpeg";</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case "jpg":</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.ContentType = "image/jpeg";</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case "........等等":</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.ContentType = "....";</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.ContentType = "application/octet-stream";</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV>
<DIV align=left>&nbsp;</DIV>
<DIV align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.WriteFile(file.FullName);</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.End();</DIV></TD></TR></TBODY></TABLE></P>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></DIV><FONT color=black>
<DIV>4、&nbsp; 最后一步就是在IIS里增加一个应用程序扩展。在&#8220;默认网站&#8221;-&gt;&#8220;属性&#8221;-&gt;&#8220;主目录&#8221;-&gt;&#8220;配置&#8221;。在弹出的&#8220;应用程序配置&#8221;窗口里按&#8220;添加&#8221;，在弹出的&#8220;添加/编辑应用程序扩展名映射&#8221;窗口里&#8220;可执行文件&#8221;选择C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll，在扩展名里输入&#8220;.rar&#8221;，然后确定即可。</DIV>
<DIV>&nbsp;</DIV>
<DIV>5、&nbsp; 在IE里输入<A href="http://193.100.100.56/TestWebSolution/WebApplication1/test.rar">http://193.100.100.56/TestWebSolution/WebApplication1/test.rar</A>，会立即跳转到<A href="http://193.100.100.56/TestWebSolution/WebApplication1/WebForm1.aspx">http://193.100.100.56/TestWebSolution/WebApplication1/WebForm1.aspx</A>，然后按WebForm1.aspx的&#8220;下载&#8221;按钮就可以下载test.rar了。</DIV>
<DIV>&nbsp;</DIV>
<DIV>6、&nbsp; 当然，这里只按例子给个思路，完全可以再根据自身情况扩展。下面有几个参考的资源文章：</DIV></FONT>
<DIV>l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="http://www.9seek.com/news/show.aspx?id=745&amp;cid=12">http://www.9seek.com/news/show.aspx?id=745&amp;cid=12</A></DIV>
<DIV>l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="http://www.9seek.com/news/show.aspx?id=521&amp;cid=12">http://www.9seek.com/news/show.aspx?id=521&amp;cid=12</A></DIV>
<DIV>l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="http://www.9seek.com/news/show.aspx?id=520&amp;cid=12">http://www.9seek.com/news/show.aspx?id=520&amp;cid=12</A></DIV>
<DIV>l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="http://msdn.microsoft.com/asp.net/using/building/web/default.aspx?pull=/library/en-us/dnaspp/html/URLRewriting.asp">http://msdn.microsoft.com/asp.net/using/building/web/default.aspx?pull=/library/en-us/dnaspp/html/URLRewriting.asp</A></DIV></DIV><img src ="http://www.cnblogs.com/GSpring/aggbug/164227.html?type=1" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://GSpring.cnblogs.com/" target="_blank">Chep</a> 2005-05-28 18:42 <a href="http://www.cnblogs.com/GSpring/archive/2005/05/28/164227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>微软.net精简框架常见问题及回答(中文版)</title><link>http://www.cnblogs.com/GSpring/archive/2005/05/22/160415.html</link><dc:creator>Chep</dc:creator><author>Chep</author><pubDate>Sun, 22 May 2005 05:26:00 GMT</pubDate><guid>http://www.cnblogs.com/GSpring/archive/2005/05/22/160415.html</guid><wfw:comment>http://www.cnblogs.com/GSpring/comments/160415.html</wfw:comment><comments>http://www.cnblogs.com/GSpring/archive/2005/05/22/160415.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/GSpring/comments/commentRss/160415.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/GSpring/services/trackbacks/160415.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 微软.net精简框架常见问题及回答(中文版)[日期：2004-10-23]来源：http://blog.csdn.net/jinco/&nbsp; 作者：jinco[字体：大 中 小] 此FAQ的内容，一部分来自 net精简框架新闻组 (microsoft.public.dotnet.framework.compactframework)张贴和回答的问题。.net精...&nbsp;&nbsp;<a href='http://www.cnblogs.com/GSpring/archive/2005/05/22/160415.html'>阅读全文</a><img src ="http://www.cnblogs.com/GSpring/aggbug/160415.html?type=1" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://GSpring.cnblogs.com/" target="_blank">Chep</a> 2005-05-22 13:26 <a href="http://www.cnblogs.com/GSpring/archive/2005/05/22/160415.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对.text的修改（1）</title><link>http://www.cnblogs.com/GSpring/archive/2005/05/17/157475.html</link><dc:creator>Chep</dc:creator><author>Chep</author><pubDate>Tue, 17 May 2005 08:47:00 GMT</pubDate><guid>http://www.cnblogs.com/GSpring/archive/2005/05/17/157475.html</guid><wfw:comment>http://www.cnblogs.com/GSpring/comments/157475.html</wfw:comment><comments>http://www.cnblogs.com/GSpring/archive/2005/05/17/157475.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/GSpring/comments/commentRss/157475.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/GSpring/services/trackbacks/157475.html</trackback:ping><description><![CDATA[<P>--查找最新的图片<BR>if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[blog_GetNewImages]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)<BR>drop procedure [dbo].[blog_GetNewImages]<BR>GO</P>
<P>SET QUOTED_IDENTIFIER ON <BR>GO<BR>SET ANSI_NULLS ON <BR>GO</P>
<P>CREATE&nbsp;&nbsp; Proc blog_GetNewImages<BR>(</P>
<P><BR>&nbsp;@Count int,<BR>&nbsp;@IsActive bit<BR>)<BR>as<BR>set rowcount @Count <BR>Select blog_images.Title, blog_images.CategoryID, blog_images.Height, blog_images.Width, blog_config.Application, blog_config.Application+'/'+convert(varchar(8),blog_images.CategoryID)+'/t_'+blog_images.[File] as [File], blog_images.Active, blog_images.ImageID From blog_Images,blog_config <BR>where blog_config.blogid=blog_images.blogid and blog_images.Active &lt;&gt; Case @IsActive When 1 then 0 Else -1 End <BR>order by UploadTime desc</P>
<P><BR>GO<BR>SET QUOTED_IDENTIFIER OFF <BR>GO<BR>SET ANSI_NULLS ON <BR>GO</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>-----取得专题排行<BR>if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[blog_GetCategoriesTop]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)<BR>drop procedure [dbo].[blog_GetCategoriesTop]<BR>GO</P>
<P>CREATE Proc blog_GetCategoriesTop<BR>(<BR>&nbsp;@IsActive bit=null,<BR>&nbsp;@CategoryType tinyint,<BR>&nbsp;@ParentID int=null,<BR>&nbsp;@Count int<BR>)<BR>As<BR>set rowcount @Count <BR>if(@ParentID is not null)<BR>Begin <BR>select&nbsp; blog_LinkCategories.CategoryID, blog_config.Application,blog_LinkCategories.blogID,blog_LinkCategories.Title, blog_LinkCategories.Active, <BR>blog_LinkCategories.CategoryType, blog_LinkCategories.[Description],ParentID ,t.blogcount <BR>FROM blog_LinkCategories,blog_config,(select count(*) as blogcount ,categoryid from blog_links group by categoryid) t <BR>where blog_config.blogid = blog_LinkCategories.blogID and <A href="mailto:blog_LinkCategories.ParentID=@ParentID">blog_LinkCategories.ParentID=@ParentID</A> and blog_LinkCategories.CategoryType = @CategoryType <BR>and blog_LinkCategories.Active &lt;&gt; Case @IsActive When 1 then 0 Else -1 End and t.categoryid=blog_LinkCategories.CategoryID<BR>ORDER BY blogcount desc;<BR>End<BR>Else<BR>Begin<BR>SELECT blog_LinkCategories.CategoryID,blog_config.Application,blog_LinkCategories.blogID, blog_LinkCategories.Title, blog_LinkCategories.Active, <BR>blog_LinkCategories.CategoryType, blog_LinkCategories.[Description],ParentID,t.blogcount <BR>FROM blog_LinkCategories ,blog_config,(select count(*) as blogcount ,categoryid from blog_links group by categoryid) t <BR>where&nbsp; blog_config.blogid = blog_LinkCategories.blogID and blog_LinkCategories.CategoryType = @CategoryType<BR>and blog_LinkCategories.Active <A href="mailto:=@IsActive">=@IsActive</A> and t.categoryid=blog_LinkCategories.CategoryID<BR>ORDER BY blogcount desc<BR>End</P>
<P><BR>GO<BR></P><img src ="http://www.cnblogs.com/GSpring/aggbug/157475.html?type=1" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://GSpring.cnblogs.com/" target="_blank">Chep</a> 2005-05-17 16:47 <a href="http://www.cnblogs.com/GSpring/archive/2005/05/17/157475.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>博客RSS 使用完全手册</title><link>http://www.cnblogs.com/GSpring/archive/2005/05/17/157276.html</link><dc:creator>Chep</dc:creator><author>Chep</author><pubDate>Tue, 17 May 2005 06:02:00 GMT</pubDate><guid>http://www.cnblogs.com/GSpring/archive/2005/05/17/157276.html</guid><wfw:comment>http://www.cnblogs.com/GSpring/comments/157276.html</wfw:comment><comments>http://www.cnblogs.com/GSpring/archive/2005/05/17/157276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/GSpring/comments/commentRss/157276.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/GSpring/services/trackbacks/157276.html</trackback:ping><description><![CDATA[<P>转自：<A href="http://bbc.icxo.com/read.jsp?aid=1867&amp;uid=164">http://bbc.icxo.com/read.jsp?aid=1867&amp;uid=164</A><BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<P>原文出处：<A href="http://msdn.microsoft.com/msdnmag/issues/04/04/XMLFiles/default.aspx" target=_blank>MSDN Magazine Apr. 2004（The XML Files）</A><BR><BR><IMG src="http://www.vckbase.com/document/image/Question.gif"> <B>什么是 Blog？</B><BR><BR><IMG src="http://www.vckbase.com/document/image/Answer.gif"> Blog是 Web Log 的简称（译者注：也就是网志(<STRONG>中国大陆也叫博客</STRONG>)）。它是一种作者与读者以日志风格进行交互的中介。在软件社区，人们以网志形式来共享观念与思想变得越来越流行。如：<A href="http://blogs.msdn.com/" target=_blank>http://blogs.msdn.com</A> 就是 MSDN 上的一个 blogging。<BR><BR><IMG src="http://www.vckbase.com/document/image/Question.gif"> <B>建立网志最轻松的方法是什么？</B><BR><BR><IMG src="http://www.vckbase.com/document/image/Answer.gif"> 要想建立自己的网志，最容易的方法是到类似 blogger.com 这样的站点注册一个新用户，它提供一个创建自定义网志的 Web 界面，并且可以立即使用所创建的网志。类似 blogger.com 的站点有很多，它们都提供对网志特性的支持。 如果你想更多地控制网志的基础结构或者想要在自己的服务器上建立网志服务系统。你可在以下最流行的几种网志应用商业产品中选择其一：Radio Userland、Manila 和 Movable Type。还有些易用的免费 .NET 网志应用可以使用，最流行的有：<A href="http://scottwater.com/blog/archive/category/71.aspx" target=_blank>.TEXT</A> 和 <A href="http://www.dasblog.net/" target=_blank>dasBlog</A>。只要把它们下载下来，然后按照安装说明进行安装与设置，分分钟便可建立起一个可运行的网志服务系统。<BR>　　从功能上讲，这两个基于 .NET 的网志应用系统不相上下。其主要区别在于 .TEXT 需要数据库，SQL Server 或者 MSDE，而dasBlog 将所有信息都存储在 XML 文件中（它基于原来一些微软公司开发人员创建的 BlogX 框架），另一个差别是 .TEXT 在单个安装配置中可支持多个网志（比如现在的 <A href="http://blogs.msdn.com/">http://blogs.msdn.com</A> 就是如此），而 dasBlog 要支持多个网志，必须进行多次安装。但 dasBlog 有一个很突出的特性，那就是&#8220;Mail to Weblog&#8221;，它允许你通过邮件来发布新信息。<BR>　　新的 MSDN 网志服务站点和 <A href="http://pdcbloggers.net/" target=_blank>PDC Bloggers</A> 都是开始查找关于软件开发主题的很好去处。只要浏览这些站点之一便可阅读其经过聚合的预定内容。其预定的摘要会向你公开许多个人网志，渐渐的你会自然而然地发现一些你比较喜欢阅读的内容。这样，你便可以直接预定你最喜欢的个人网志摘要。<BR>　　对于专门讨论 XML 和 Web 服务的网志，请查看 MSDN <A href="http://msdn.microsoft.com/webservices/community/blogs/" target=_blank>Web Services Developer Center</A> 上的清单，我个人要花很多时间上这些网志站点。<BR><BR><IMG src="http://www.vckbase.com/document/image/Question.gif"> <B>什么是 Feed（以下称为提要），如何预定它？</B><BR><BR><IMG src="http://www.vckbase.com/document/image/Answer.gif"> 网志以 RSS 文档形式为其内容提供一个提要，该 RSS 文档可以通过众所周知 URL 获得。RSS 文档是一个 XML 文件，它包含大量离散的新闻项，如某个网志中的入口项（RSS 提要的例子参见 <A href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig1" target=_blank>Figure 1</A>）。由于 RSS 是 XML 格式文件，所以它很容易被其它程序所使用。<BR>　　RSS 聚合器是一个读取 RSS 文档并显示新闻项的程序。大多数聚合器只要输入 RSS 的 URL，使得预定提要成为可能。<BR>　　RSS 使阅读网志便得容易。大多数经常阅读网志的开发人员都使用某种类型的聚合器来帮助他们有效地筛选提要内容。聚合器使得阅读网志的感觉就象是在阅读电子邮件，因为它们突出新闻项并将新闻项进行缓冲处理以便离线阅读（参见 <A href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig2" target=_blank>Figure 2</A>）。<BR>　　还有一些在线 RSS 聚合器将 RSS 提要捆绑到某个单独的网站。其优点是易于设置并且可以从任何计算机存取你的提要内容。当然，其缺点也是显而易见的，那就是在阅读时必须始终保持连接。<BR>　　RSS 是网志成为一种强大的新型信息交流形式之根本所在。在网志出现之前，大多数开发人员为了要查找到需要的内容，通常要花大量时间来筛选掉那些令人讨厌的无关的信息。<BR>　　网志通过让读者选择所要阅读的提要，将控制权交给读者，从而有效地构建自己的个性化内容流。<BR>　　其它类型的站点也能利用 RSS 的优点来聚合内容。例如，多数主流的新闻站点包括 Wired、CNet、Yahoo 和 NPR News 都提供 RSS 提要。访问 <A href="http://www.blogdigger.com/" target=_blank>Blogdigger</A> 和 <A href="http://www.syndic8.com/" target=_blank>Syndic8</A>，你可以找到一些支持 RSS 的站点。<BR>　　微软的 MSDN 提供<A href="http://msdn.microsoft.com/aboutmsdn/rss.asp" target=_blank> RSS 提要</A>（RSS feeds）来聚合新添加到站点的技术内容。MSDN 的 <A href="http://msdn.microsoft.com/rss.xml" target=_blank>Just Published</FONT></A>提要是一种保持 MSDN 新文章和下载的主要方式。甚至 MSDN Magazine（MSDN 杂志）都有其自己的 RSS 提要！可以预定：<A href="http://msdn.microsoft.com/msdnmag/rss/recent.xml" target=_blank>http://msdn.microsoft.com/msdnmag/rss/recent.xml</A> 获得每月的更新以便查看本期有何内容？目前有许多种 RSS 聚合器可供选择，在 <A href="http://blogs.law.harvard.edu/tech/directory/5/aggregators">http://blogs.law.harvard.edu/tech/directory/5/aggregators</A> 上可以找到一个相当完整的列表。其中一些是在线聚合器，而另外一些是桌面应用程序。有些是免费的，另外一些需要付费才能使用。<BR><BR><IMG src="http://www.vckbase.com/document/image/Question.gif"> <B>哪个 RSS 版本是最通用的？</B><BR><BR><IMG src="http://www.vckbase.com/document/image/Answer.gif"> 这个问题的答案要看你问的是谁，RSS 的版本有好多个，0.90、0.91、0.92、0.93、0.94、1.0 和 2.0。要弄清楚这些版本之间的差别是巨大的挑战之一。理解它们需要了解一些有关它们的历史背景。Netscape 创建了 RSS 的最初版本 0.90，起初的名字是&#8220;RDF Site Summary&#8221;或者&#8220;Rich Site Summary&#8221;（规范中说前者是正式名称）。Netscape 创建 RSS 0.90 用于其 Web 门户，这个时候，其他人看到了 RSS 的使用潜力。Userland Software 是第一个开始将 RSS 用于其网志商业产品者之一。<BR>　　版本 0.90 在很大程度上基于 W3C 的 Resource Description Framework (RDF)。许多人都认为 RDF 过于复杂，因此都建议出一个免费的简化版本 0.91。这个任务恰好就给了 Userland Software。Userland Software 便继续发展 RSS 的简化版本，随后出台的版本包括：0.92、0.93 和 0.94。为了强调其所做的简化工作，他们将 RSS 的全称定为&#8220;Really Simple Syndication&#8221;。<BR>　　正当 Userland Software 继续专注于其简化工作时，另外一组开发人员在复兴最初的 RDF 版本（0.90），因为 RSS 号称自己更灵活。他们最终发布了一个 RSS 1.0 的版本，其正式名称还是&#8220;RDF Site Summary&#8221;。由于使用 RDF，这个版本完全不同于 Userland Software 所控制的版本。Userland Software 当然不太愿意看到 RSS 1.0 似乎要取代其 0.94 版本的事实，于是出了一个新版本，并将版本号一下子跳到了 2.0。<BR>　　这就是今天的这种局面，形成了两个主要的竞争版本：一个基于 RDF 1.0，而另一个则不是（2.0），但它们两个都共用相同的名字。这是一种可怕的混乱，因为版本号导致人们误认为 2.0 是 1.0 的改进版本，而实际上它们是两个目标完全不同的规范。另一组开发人员已经下狠心着手解决这种混乱问题，通过定义新的摘要（syndication）规范来与 RSS 名字的随意性决裂。这个解决方案称为 Atom（原子）项目。本文稍后将会详细讨论。<BR>　　使用哪个版本其实是无关痛痒的，大多数 RSS 聚合机制支持所有的 RSS 版本（有些甚至支持 Atom）。最终的决定取决于你是否想使用 RDF，可谓萝卜白菜，各有所爱，它完全要看某人所信奉的 <A href="http://www.w3.org/2001/sw" target=_blank>Semantic Web</A> 概念而定。<BR><BR><IMG src="http://www.vckbase.com/document/image/Question.gif"> <B>RSS 1.0 和 RSS 2.0 各是什么样子？</B><BR><BR><IMG src="http://www.vckbase.com/document/image/Answer.gif"> RSS 1.0 和 2.0 格式所包含的核心信息相同，但其结构不一样。我提供了一个 RSS 1.0 文档（参见 <A href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig1" target=_blank>Figure 1</A>）以及一个同等的 RSS 2.0（参见 <A href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig2" target=_blank>Figure 2</A>）用于对照。<BR>你会注意到顶行右边开始的根元素的差异，RSS 1.0 的根元素是 rdf:RDF，而 RSS 2.0 的根元素是 rss。rss 还包含一个强制版本属性用以表示所用的RSS的准确格式（可能的值包括：0.91, 0.94 等）。另一个主要差别是 RSS 1.0 文档有名字空间限定，RSS 2.0 的文档就没有。不管怎样，包含在两个文档中的信息本质上是一样的。<BR>　　两个版本都包含 channel 元素，而 channel 元素又包含三个必须的元素：title、description 和 link，其代码如下： </P><PRE><CHANNEL>
   
   <DESCRIPTION><!  简要描述  ></DESCRIPTION>
   <LINK><!  channel 的 URL  ></LINK>
   <!  可选/可扩展元素  >
</CHANNEL>      </PRE>
<P>　　除了这些必须的元素外，RSS 1.0 还定义了三个附加元素：image、items 和 textinput，其中，image 和 textinput 是可选的。另一方面，RSS 2.0 提供了 16 个附加元素，其中也包括 image、items 和 textinput，此外还有 language、copyright、managingEditor、pubDate 和 category。RSS 1.0 允许通过定义在单独的 XML 名字空间中的可扩展元素来创建这种类型的元数据。<BR>　　这两种格式在结构上的主要区别必须要看其 item、image 和 textinput 节点的表示形式。RSS 1.0 中，channel 元素包含对 item、image 和 textinput 节点的引用，这些节点存在于 channel 节点本身之外。这样在 channel 和 所引用的节点之间建立了一种 RDF 关联。如 <A href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig1" target=_blank>Figure 1</A> 所示，channel 元素与一个 image 元素以及两个 item 元素关联。RSS 2.0 中，item 元素只是在 channel 元素中连续排放（如 <A href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig2" target=_blank>Figure 2</A> 所示）。item 元素包含实际的新闻项信息。item 的结构在两个版本中是相同的。item 元素通常包含 title、link 和 description 元素，如下代码所示： </P><PRE><ITEM>
   
   <LINK><!  项 URL  ></LINK>
   <DESCRIPTION><!  简要描述  ></DESCRIPTION>
   <!  可选的/可扩展的元素  >
</ITEM> </PRE>　　在 RSS 1.0 中，title 和 link 是必须的，description 是可选的。而在 RSS 2.0 中，title 或 description 必须提供其中的一个；其它均可选。这些只是定义在 RSS 1.0 中的 item 元素。RSS 2.0 提供几个其它可选元素，其中有 author、category、comments、enclosure、guid、pubDate 和 source。RSS 1.0 获取这样的元数据是通过定义在单独的 XML 名字空间中称为 RSS 模块的可扩展元素来实现的。例如，在 <A href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig1" target=_blank>Figure 1</A> 中，item 的日期是用 Dublic Core 模块的 <?xml:namespace prefix = dc /><dc:date>元素表示的。<BR><BR>有关不同格式的完整信息请参考 <A href="http://web.resource.org/rss/1.0/spec" target=_blank>RSS 1.0</A> 和 <A href="http://blogs.law.harvard.edu/tech/rss" target=_blank>2.0</A> 规范。<BR><BR><IMG src="http://www.vckbase.com/document/image/Question.gif"> <B>那么，何为 Atom？</B><BR><BR><IMG src="http://www.vckbase.com/document/image/Answer.gif"> 前面我提到过，Atom 乃一项目的名字，主要是开发一个新的网志摘要格式以解决目前 RSS 存在的问题（混乱的版本号，不是一个真正的开放标准，表示方法的不一致，定义贫乏等等）。Atom 希望提供一个清晰的版本以解决每个人的需要，其设计完全不依赖于供货商，任何人都可以对之进行自由扩展，完整详细说明。<BR>　　当今许多 Blog 引擎已经支持当前的摘要格式。<A href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig3" target=_blank>Figure 3</A> 是一个Atom 0.3 提要例子，它与前述 <A href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig1" target=_blank>Figure 1</A> 及 <A href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig2" target=_blank>Figure 2</A> RSS 提要等同。注意 Atom 提要用名字空间限定的，但它不使用 RDF。这使得 Atom 和 RSS 1.0 及 RSS 2.0 在某些地方有相似之处。Atom 在未来是否能被接受，人们拭目以待。<BR>　　除了定义新的摘要格式之外，Atom 还希望定义一个标准的档案文件格式和一个标准的网志编辑 API（Atom API）。有关 Atom 详细规范以及其它 Atom 资源请访问 <A href="http://www.intertwingly.net/wiki/pie/FrontPage" target=_blank>The Atom Project</A>。<BR><BR><IMG src="http://www.vckbase.com/document/image/Question.gif"> <B>什么是 blogroll？</B><BR><BR><IMG src="http://www.vckbase.com/document/image/Answer.gif"> blogroll<SPAN lang=en-us> </SPAN>是网志提要的集合，大多数 blogger（博客）在其个人网志上都提供 blogroll。这就允许读者连接到其他趣味和写作风格相投的人的网志上。Blogroll<SPAN lang=en-us> </SPAN>方便了网络上的沟通。通过使用Outline Processor Markup Language （OPML），人们可以用 XML 格式文件交换 blogroll。<A href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig4" target=_blank>Figure 4</A> 是 blogroll 的一个例子。<BR>　　大多数网志引擎都自己管理 blogroll，每当读者请求 blogroll 时都自己产生相应的 XML 格式。同样，大多数聚合器都能导入 blogroll 并自动预定所包含的摘要。有关 OPML 更多的信息参见 <A href="http://opml.scripting.com/">http://opml.scripting.com</A>。 <BR><BR><IMG src="http://www.vckbase.com/document/image/Question.gif"> <B>能解释 referrers、trackbacks 和 pingbacks 是什么吗？</B><BR><BR><IMG src="http://www.vckbase.com/document/image/Answer.gif"> 大多数网志软件都能让读者添加网志评论。但更常见的做法是让读者在其自己的网志添加一个入口回链到原来的帖子。博客们（Bloggers）都乐于跟踪连接发生的时间以便新读者能理解整个会话内容。 <BR>　　所谓 referrer 是一个外部站点，用户单击该站点上一个超链接便可以到达你的网站。许多网志引擎当读者导航到你的网志的某个入口时都能自动保持跟踪。大多数引擎都会在网志入口底部显示一个 referrers 清单，以便读者能往回导航到 referrer 的站点，并清楚他们关于该入口要说些什么，这基于一个假设，那就是如果他们链接到它，可能就此会写些什么。referrer 存在的问题是必须要有这个假设才成立——没有足够的信息说明是否引用的页面事实上包含有关信息。实际上，垃圾信息的发布者为了营销企图已经利用了这个漏洞来重定向读者。<BR>　　Trackback 和 pingback 同一个规范，被用来弥补上述问题的方案。使用 trackback 和 pingback，其他博客们能自动发送一个 ping 到你的网志以明确表示他们已经写了一个引用特定帖子的入口。<BR>　　这种类型的反链允许你的网志以更明显的方式显示所有评论的清单。当今大多数网志软件支持所有这些技术。参见 <A href="http://www.movabletype.org/docs/mttrackback.html" target=_blank>TrackBack Technical Specification</A> 和 <A href="http://www.hixie.ch/specs/pingback/pingback-1.0" target=_blank>Pingback 1.0</A>。<BR><BR><IMG src="http://www.vckbase.com/document/image/Question.gif"> <B>如何为我的站点产生 RSS 提要？</B><BR><BR><IMG src="http://www.vckbase.com/document/image/Answer.gif"> <A href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig5" target=_blank>Figure 5</A> 举例说明了如何用 asp:Repeater 控件在 .aspx 页面中生成 RSS 2.0 提要。该页面假设你已经在后端代码文件中将控件的 DataSource 属性设置成对应的数据库结果集。<BR><BR><IMG src="http://www.vckbase.com/document/image/Question.gif"> 我想聚合几个 RSS 提要并将信息显示在个人网站上，能解释一下如何实现吗？<BR><BR><IMG src="http://www.vckbase.com/document/image/Answer.gif"> 因为 RSS 提要是 XML 文件，作为练习，你可以用自己最擅长的 XML API，比如，Microsoft .NET Framework 中的 System.Xml，<A href="http://www.vckbase.com/document/journal/vckbase31/figures/xmlfiles_0404fig.htm#fig6" target=_blank>Figure 6</A> 中包含 ASP.NET Web 用户控件代码，它是我编写用来聚合 blogroll 文件中（.opml）所列出的 RSS 提要的一段代码。这段代码假设 opml 元素包含 numberToDisplay 属性，以表示你打算显示的每个提要有多少项。<BR><BR><IMG src="http://www.vckbase.com/document/journal/vckbase31/images/xmlfilefig07.gif" border=0><BR>Figure 7 ASP.NET Web 用户控件<BR><BR>你可以将控件拖到任何 .aspx 页面中，它将显示 blogroll 文件中列出的不同提要的项，Figure 7 显示了 Utah .NET User Group 网站使用这个控件的效果画面。<BR><BR><IMG src="http://www.vckbase.com/document/image/Question.gif"> <B>有没有与网志交互的 Web Services APIs？</B><BR><BR><IMG src="http://www.vckbase.com/document/image/Answer.gif"> 许多网志引擎都提供属于自己的 Web service 接口，通过编程与网志交互，但目前还没有出现一种标准化的东西。<BR>.Text 和 dasBlog 两者都提供某些 .asmx 端点，可以通过 SOAP 来实现编辑功能，但其接口是不同的。Blogger.com 提供基于 XML-RPC 的交互式 API （<A href="http://www.blogger.com/developers/api/1_docs" target=_blank>Blogger API</A>）。Userland Software 对Blogger API 的功能进行了增强，并把它叫做 <A href="http://www.xmlrpc.com/metaWeblogApi" target=_blank>MetaWeblog API</A>。这些可能是当今公认的网志 APIs，但仍然不是所有网志引擎都支持的。还有一个用于添加评论的独力的 API 叫做 <A href="http://wellformedweb.org/story/9" target=_blank>Comment API</A>，同样，它也不是被普遍支持。<BR>　　Atom 组正在努力解决这些问题，Atom API 定义了一个标准的网志 API 用于发布和编辑网志内容。有关信息请参考<A href="http://www.intertwingly.net/wiki/pie/FrontPage" target=_blank> The Atom Project</A> 网站。<BR><BR>发送问题和评论给 <A href="mailto:Aaron：xmlfiles@microsoft.com">Aaron：xmlfiles@microsoft.com</A>。<BR>　</TD></TR>
<TR>
<TD><IMG src="http://www.vckbase.com/document/image/paragraph.gif"> <B>作者简介</B><BR>　　Aaron Skonnard 在盐湖城 Northface 大学授课。与人合著有《Essential XML Quick Reference》（Addison-Wesley, 2001）以及《Essential XML》（Addison-Wesley, 2000），经常在会议上演讲。在 <A href="http://www.skonnard.com/">http://www.skonnard.com</A> 可以联系上他。</TD></TR>
<TR>
<TD>
<P>本文出自 <A href="http://msdn.microsoft.com/msdnmag/default.aspx" target=_blank>MSDN Magazine</A> 的 <A href="http://msdn.microsoft.com/msdnmag/issues/04/04/default.aspx" target=_blank>April 2004</A> 期刊，可通过当地报摊获得，或其最好是<SPAN #00ff00> </SPAN><A href="http://msdn.microsoft.com/msdnmag/subscribe.aspx" target=_blank>订阅</A>。</P></TD></TR></dc:date></TBODY></TABLE></P><img src ="http://www.cnblogs.com/GSpring/aggbug/157276.html?type=1" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://GSpring.cnblogs.com/" target="_blank">Chep</a> 2005-05-17 14:02 <a href="http://www.cnblogs.com/GSpring/archive/2005/05/17/157276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>