好久不写博文了,回想起来上一篇博文应该是很久以前写的了。今天写点过去的学习心得——.net中实现伪静态。

比如:类似这样的链接list.aspx?id=1&pid=5,我们并不想在浏览器地址栏中(注意这句话)看到后缀和参数的传递,我们想让他变成list-1-5.html这样的。原理很简单,首先展现给客户点击的部分就写成list-1-5.html或者是其他的静态的.html链接,比如:list/1/5.html或者list_1_5.html等,在前台部分都这样写,浏览器不管你处理的页面,他只知道你是点击了一个.html(我是这样理解的),那么打开的页面的浏览器地址栏中就是这个.html,然后我们看到的下面这个部分其实是一个处理程序运行的结果。说白了叫改变应用程序的处理方式,让处理页面偷偷的运行,然后推到前方),我还有点不明白的是:为什么IIS这样处理:我点击.html的页面,但是这个页面中目录中并不存在,平时我们请求一个html页面的话,没有这个文件就显示找不到是吧?但是这里有点不同,他让浏览器的地址部分和处理程序也就是接收参数的aspx页面合到一起了,地址显示的是点击的什么什么.html,然后下面的部分是aspx处理呈现的,还是一个aspx页面。可以这样理解,但是就是有点看不懂,不好理解。

说到伪静态有2种方式。第一种:用一个类来分解请求的.html这个中的参数,加上在web.config中进行简单的配置就OK,把这些参数传给aspx的处理页面去处理,然后呈现结果。还有一种是直接在web.config中配置,稍微复杂一点,然后他不用去写一个特殊的处理类就可以让处理页面接到传值呈现结果了。

必要条件:都离不开一个第三方的.dll文件:URLRewriter.dll

搞一个过程吧,这样看起来很直观:

新建web网站在vs2010(这个是我的环境)中

在bin文件中引用上面的.dll

在目录下新建一个aspx页面用来呈现给用户,在其中放置链接,直接上图:

这个是呈现给用户去点的,总要有个入口吧~。

先说第一种方式的处理,上面我们说了第一种是要一个类来分解这个参数把这个参数传到处理页面也就是.aspx页面去处理,上类的图:

这里注意一点:这个类一定要放在App_Code这个文件夹中,这个类就是在处理页面之前捕获客户端发到服务器端的请求页面的值,对这个值进行处理得到参数。App_Code这个文件夹对于一个解决方案来说是一个全局文件夹,任何的请求之前都要先执行这个中间的对应方法类,比如:过滤输入的类可以放在里面,然后捕获请求的也可以放其中等等。反正就是中处理程序之前处理的都可以放这个里面(暂且这样理解)。

接下来就是上面的那个detail.aspx了,这个文件是真正处理的页面,上图:

好了,最后配置一下config文件,上图:

运行一下,在那个类那里设一个断点,他肯定跑去那里了。

下面说第二种,这种唯一的区别是在web.config这个文件中,上面的那个类也不要了,直接上配置文件的图:

好了,其他的不变,运行,是同样的结果。第二种,我感觉那个.dll类中也做了处理的了,怎么处理?我想应该是把那个config中的配置就是上图的2部分处理了一下,就这么简单我觉得。

写个个人感觉吧,综合起来第一种要简单一点,为什么,我是这样理解的,一个类可以处理很多种不同的情况,而你在config中配置的话就没有那么灵活了,看上面图中 2 的部分,要这样写的话,如果像新浪那么大的那么多的处理页面那个config还不大的惊人(虽然正则可以覆盖大部分也很不方便啊!),处理类就不同了,处理页面可以作为一个变量放在程序中,谁来改谁。

其实这是我的一点个人学习感受,有不同意见的可以相互指点。说到这,我有点对webconfig这个文件更多的佩服,微软用这个文件中应用程序中居然发挥那么大的作用,真是感觉自己就像是井底之蛙。学习中~~~

转载于:https://www.cnblogs.com/20m13v08c15/p/4146022.html

.net中实现伪静态的学习小结相关推荐

  1. python中字典和集合的区别_Python中字典和集合学习小结

    映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...

  2. Python - 输出格式 (学习小结)

    Python - 输出格式 (学习小结) Bu.xing 利用现代手段,创建学习家园 ​关注他 1 人赞同了该文章 Python 输出格式 我们常说的输出格式分两种含义: # 一种是指数据在屏幕上的显 ...

  3. Page 的生命周期学习小结

    (以前我在 csdn 写的翻译文章,现在转到这里来.) Page 的生命周期学习小结 原文链接:Page Events: Order and PostBack 作者:Paul Wilson 翻译:木野 ...

  4. c语言基本类型学习小结

    基本类型学习小结 环境: Dev-C++ 4.9.6.0 (gcc/mingw32), 使用-Wall编译选项 基本类型包括字节型(char).整型(int)和浮点型(float/double). 定 ...

  5. 【转载】Hyperledger学习小结

    Hyperledger学习小结 自学Hyperledger Composer也有段时间了,是时候对所学的知识总结一下了.因为没有实际项目参与的话,差不多也就到此为止了.后续可能会去了解一下以太坊的技术 ...

  6. 图片裁剪功能学习小结

    图片裁剪功能学习小结 近期有需要使用图片裁剪的功能,在使用插件和自己写裁剪组件之间犹豫了很久,后来根据需求经过反复的考虑,还是自己封装吧,毕竟自己动手,丰衣足食,对吧?嗯,??????是的!最后生成裁 ...

  7. pthread多线程编程的学习小结

    pthread多线程编程的学习小结 pthread 同步3种方法: 1 mutex 2 条件变量 3 读写锁:支持多个线程同时读,或者一个线程写 程序员必上的开发者服务平台 -- DevStore p ...

  8. ShaderLab学习小结(十九)RenderToCubemap创建能反射周围环境的效果

    继续用"ShaderLab学习小结(十八)cubemap"中所做的shader 想要让它能对周围的环境进行反射 思路就是要让它的cubemap里的内容是周围环境的映射 shader ...

  9. RabbitMQ(七):常用方法说明 与 学习小结

    RabbitMQ(一):Hello World程序 RabbitMQ(二):Work Queues.循环分发.消息确认.持久化.公平分发 RabbitMQ(三):Exchange交换器--fanout ...

最新文章

  1. 后台获得客户端IP地址
  2. 解答:为什么蚊子咬的包会痒痒
  3. Spring Boot + JSP 创建web项目
  4. 转型从思维习惯的转变开始
  5. 使用 redmind 进行项目任务管理
  6. 传统负载均衡助力AIOps优化智能运维
  7. 【我的物联网成长记7】物联网主流通信协议解读【华为云分享】
  8. MyCat分布式数据库集群架构工作笔记0018---高可用_单表存储千万级_海量存储_水平分表划分原则
  9. 惠普服务器c盘格式化提示win7系统盘,通过U盘重装系统,已经格式化C盘提示如下...
  10. 2021-2025年中国伊维菌素原料药行业市场供需与战略研究报告
  11. main()在C和C ++中应该返回什么?
  12. Exchange 2007 SP1 SCR
  13. 超详细大学生申请软件著作权登记模板及教程
  14. php 开发一元夺宝插件,yiyuanyungou 一元云购商城源码,商用 ci框架开发,带指定中奖插件 Other systems 其他 249万源代码下载- www.pudn.com...
  15. eaxsinbx_高等数学导数与微分练习题
  16. 【搜索/提问必备】如何正确的在Stack Overflow提问
  17. Rhino4.0软件安装教程
  18. flutter 实现文字竖排以及动画效果(文字逐一显示)
  19. php7.4 ffi,PHP7.4中FFI的介绍(代码示例)
  20. jsbeautify格式化html属性分行展示

热门文章

  1. clipse中Access restriction: The type ‘XXX’ is not API 解决
  2. 8.Azure文件(文件共享)-NAS(中)
  3. js正则标志/g,/i,/m说明
  4. Tempter of the Bone
  5. 关于Servlet出现乱码问题
  6. 从MapX到MapXtreme2004[4]-标注AutoLabel
  7. 普通笔记本能运行Linux么,Windows ARM 笔记本电脑现在可以运行 Ubuntu
  8. 团队的远程管理_不管理远程团队的7种方法
  9. tor 127.0.0.1_如何创建虚荣Tor .onion网站地址
  10. awx文件_如何在Minishift上运行AWX