<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/xsl/rss.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:ppp="http://blog.sohu.com/rss/module/ppp/"
	>

	<channel>
		<title>心得</title>
		<link>http://zhuyaming88.blog.sohu.com/</link>
		<description><![CDATA[心得]]></description>
		<pubDate>Sun, 22 Jun 2008 10:57:24 +0800</pubDate>
		<generator>搜狐博客</generator>
		<ppp:ebi>78cf5be792</ppp:ebi>
		<image>
			<title>http://blog.sohu.com</title>
			<url>http://js.pp.sohu.com/ppp/blog/images/common/logo_150_60.gif</url>
			<link>http://blog.sohu.com/</link>
			<width>100</width>
			<height>43</height>
			<description>搜狐博客</description>
		</image>
		<item>
			<title>ASP.NET 2.0 中的URL 重写技术</title>
			<link>http://zhuyaming88.blog.sohu.com/90773924.html</link>
			<comments>http://zhuyaming88.blog.sohu.com/90773924.html#comment</comments>
			<dc:creator>心得</dc:creator>
			<pubDate>Sun, 22 Jun 2008 10:57:24 +0800</pubDate>
			<category>技术分享</category>
			<guid>http://zhuyaming88.blog.sohu.com/90773924.html</guid>
			<description><![CDATA[<div>
<h2><a href="http://www.cnblogs.com/lgp/archive/2006/10/16/530426.html">ASP.NET 2.0 中的URL 重写技术</a> </h2>
<p><font color="#808080" size="2">说明：当我在开发一个网站的时候，我遇到了这样一个问题：</font></p>
<p><font size="2"><font color="#808080">这是一个有多个子域的网站，如：support.henryliu.com,product.henryliu.com,service.henryliu.com,客户想把这三个子站点指向同一个位置。他要实现无论何时，用户请求support.henryliu.com/default.aspx时，henryliu.com/support/default.aspx会被执行。 也就是说，他想把henryliu.com/support/default.aspx这个地址隐藏起来，不让用户看到。我们把改变原始请求URL的这个过程叫做URL重写。在这篇文章里，我将阐述关于URL重写的技术。</font></font></p>
<p>&nbsp;</p>
<p>实现URL重写的几种方法？</p>
<p>l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 利用Application_BeginRequest和HttpContext类的Rewrite方法重写URL，这种方法比较简单易懂易用。</p>
<p>l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 开发ASP.NET Http Module来达到同样的目的</p>
<p>l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 开发ISAPI过滤器来截取请求完成重写</p>
<p>&nbsp;</p>
<p>在这里,我们将就第一种方法来阐述URL重写的实现<br /><br /></p>
<p><font size="+0"><strong><font color="#000000">Application_BeginRequest 事件<br /><br /></font></strong></font></p>
<p>它是HTTP管线处理被激发的第一个事件,是重写URL的最佳地方</p>
<p>&nbsp;</p>
<p><strong>HttpContext 类</strong></p>
<p>这个类包含有关Http的特定信息，其中有Http Request,当然也有Response对像。</p>
<p>这个类里面有一个Current静态属性，它里面包含当前应用程的信息。RewritePath方法是重写URL的关键。在2.0中有四个签名：</p>
<p align="left">public void RewritePath(string path);</p>
<p align="left">public void RewritePath(string path, bool rebaseClientPath);</p>
<p align="left">public void RewritePath(string filePath, string pathInfo, string queryString);</p>
<p>public void RewritePath(string filePath, string pathInfo, string queryString, bool setClientFilePath);</p>
<p>&nbsp;</p>
<p><strong>按步就搬</strong></p>
<p>&nbsp;</p>
<p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 新建一个C# Web Application工程</p>
<p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开WEB配置文件，加入下列代码<br /></p>
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />&lt;appSettings&gt;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />&lt;add&nbsp;key=&quot;productsSite&quot;&nbsp;value=&quot;products&quot;&gt;&lt;/add&gt;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />&lt;add&nbsp;key=&quot;servicesSite&quot;&nbsp;value=&quot;services&quot;&gt;&lt;/add&gt;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />&lt;add&nbsp;key=&quot;supportSite&quot;&nbsp;value=&quot;support&quot;&gt;&lt;/add&gt;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />&lt;/appSettings&gt;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" /></div>
<p>&nbsp;</p>
<p><font color="#000000">我们把相对应的文件夹名称放在这里，在后面的代码中将用到。</font></p>
<p><font color="#000000">3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在工程里添加三个文件夹，Products,Support Services</font></p>
<p><font color="#000000">4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在每个文件里面添加一个default.aspx页面</font></p>
<p><font color="#000000">5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#000000">打开Global.asax看看事件句柄</font> </p>
<p>&nbsp;</p>
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />protected&nbsp;void&nbsp;Application_BeginRequest(object&nbsp;sender,&nbsp;EventArgs&nbsp;e)</div>
<p></p>
<p>6.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把下面的代码加到上述事件里：<br /></p>
<p><br /></p>
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;host,&nbsp;originalurl,&nbsp;newurl;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host&nbsp;=&nbsp;Request.Url.Host;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;originalurl&nbsp;=&nbsp;Request.Url.PathAndQuery;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(host)<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cnblogs.com/Images/dot.gif" />{<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;products.henryliu.com&quot;:<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newurl&nbsp;=&nbsp;&quot;~/&quot;&nbsp;+<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConfigurationSettings.AppSettings[&quot;productsSite&quot;]<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;originalurl;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;services.henryliu.com&quot;:<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newurl&nbsp;=&nbsp;&quot;~/&quot;&nbsp;+<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConfigurationSettings.AppSettings[&quot;servicesSite&quot;]<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;originalurl;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;support.henryliu.com&quot;:<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newurl&nbsp;=&nbsp;&quot;~/&quot;&nbsp;+<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConfigurationSettings.AppSettings[&quot;supportSite&quot;]<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;originalurl;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newurl&nbsp;=&nbsp;&quot;~/&quot;&nbsp;+<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConfigurationSettings.AppSettings[&quot;supportSite&quot;]<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;originalurl;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.RewritePath(newurl);</div>
<p><br />&nbsp;<br /></p>
<p>&nbsp;<strong> </strong><strong>让我们再来看看这段代码：</strong></p>
<p>&nbsp;</p>
<p>首先我们用 Request.Url.Host 属性得到主机名，如：support.henryliu.com,其次还要获得当前路径的查询字符串。Switch语句我们用来根据当前用户的请求来判断真正要执行的页面请求。最后，我们调用RewritePath()方法重写当前请求的URL。</p>
<p>&nbsp;</p>
<p>总节：在这篇文章里我们可以学习到怎样用Application_BeginRequest 和HttpContext.RewritePah()来重写URL。这是一个快速实现实际请求页面和我们看到的URL不同的方法。<br /><br /><font color="#808080" size="2">p.s.这是一篇译自</font><a href="http://www.dotnetbips.com/"><font color="#808080" size="2">Dotnetbips</font></a><font color="#808080" size="2">&nbsp;网站的一篇技术文章,拿来共同分享.感谢作者</font><font face="Times New Roman"><font color="#808080"><font size="2"><strong>Bipin Joshi&nbsp;&nbsp;</strong>&nbsp;</font></font><a href="http://www.dotnetbips.com/Articles/displayarticle.aspx?id=267"><font color="#808080" size="2">原文地址</font></a></font></p>
<p>posted on 2006-10-16 16:18 <a href="http://lgp.cnblogs.com/">Henry Liu</a> 阅读(4538) <a href="http://www.cnblogs.com/lgp/archive/2006/10/16/530426.html#Post">评论(5)</a> &nbsp;<a href="http://www.cnblogs.com/lgp/admin/EditPosts.aspx?postid=530426">编辑</a> <a href="http://www.cnblogs.com/lgp/AddToFavorite.aspx?id=530426">收藏</a> 所属分类: <a href="http://www.cnblogs.com/lgp/category/25531.html">C#</a> </p></div>]]></description>
		</item>
		    
		
	</channel>
</rss>
