ASP.NET 用虚拟路径代替参数

ASP.NET 用虚拟路径代替参数。这种技术其实并不是网页本身需要的,用querystring的效果其实是完全一样的。那我们费那个劲干什么呢?一句话,为了Google。

留心过有关Google文章的朋友都知道一点,静态地址的网页在Google里总是优先于带Querystring参数的。原理上讲,Google觉得那样的网页是经常变化的,查询结果的有效性比较差,可能一会儿就变化了。一般意思上的次序这样的:

http://www.msn.com/index.htm > http://www.msn.com/index.aspx > http://www.msn.com/index.aspx?id=1

所以就有了虚拟路径来替代参数这一说,好让自己的排名在Google里提前。看看我们CSDN用的.Text也是这么做的。我的这一个blog的地址是:http://blog.csdn.net/dawave/archive/2004/08/07/68322.aspx,仔细一看,大家就发现 2004/08/07/68322 其实是参数。20004/08/07 是日期,68322 是文章的ID号。大家可以阅读.Text的源代码研究。如果,觉得那个太复杂,看下面我的例子。

因为内容比较多,也向上次(Eclipse, Lomboz & Tomcat)一样,要分几次写完。

环境 .NET 加 IIS
基本的开发概念你要具备,比如,在IIS里建一个Application,知道在哪里找到web.config文件,编译你的C#文件并放在正确的位置,编辑ASPX文件。这些细节我就一笔带过了,希望你已经知道怎么处理了,不然的话,请参考有关ASP.NET的入门教程。

为什么我们不讲VS .NET?因为它不是免费的自由软件,不能保证每个人都能得到它,如果以他为基础的话,那些没钱用VS .NET的朋友就一头雾水了。

首先我们讲handler,ASP.NET用handler来处理一些类似filter,或者listener的任务,一个最简单的handler程序是这样的:

namespace test
{

public class TestHandler : IHttpHandler
{
  public void ProcessRequest(HttpContext context)
  {
    context.Server.Transfer("../index.aspx?from=myhandler");
  }

  public bool IsReusable
  {
   get { return true; } 
  }
}
}

至少两个函数是必需的:ProcessRequest, IsReusable。上面这个handler把它接到的request全部转到上级目录的index.aspx。编译这个handler并把它放到bin目录下。大家记得要先放一个index.aspx在那里,不然测试的时候显示文件找不到,还以为是handler出错。

关于网页转向,这里有一点要注意:其实有两种转向的方法,transfer和redirect,transfer发生在服务器端,redirect发生在client端。这就是为什么transfer转向的时候,你的IE地址栏不发生变化,而redirect转向的时候,新地址显示在地址栏里了。我们要求我们的网页没有参数,就必须使用transfer,而不能用redirect,从技术上讲,transfer还比redirect要快一些。

接下来的事情要修改web.config,在System.Web段里,加上下面的内容:

< httpHandlers >
  < add verb="*" path="test/*.aspx" type="Test.TestHandler,Test" / >
< /httpHandlers >

它告诉IIS碰到test目录下所有的aspx文件,由我们的testHandler来处理。

测试:打开IE,输入localhost/test/abc.aspx,应该转到你的application 目录中的index文件了。

 

index里你可以这样测试,简单的加一个< % Request["from"] % >,让handler传过来的参数显示在屏幕上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值