urlMappings与URL映射
此配置节的作用就是往Web程序中添加URL的映射,从而达到用户访问映射后的URL(如/Page/AAA)也能访问到源URL(如/Page/PageAAA.aspx)的效果。这也是URL映射本来的作用。
详细配置如下

其中要启用这个URL映射的必须要把enabled设置成true,add和remove的url都是映射后的URL。
最开始鄙人是在WebForm中尝试,结果是成功的;然后担心在MVC下已经废弃了,最开始可能是某些原因导致映射不了,直接说找不到URL,后来估计打断点查看一下两个应用程序(WebForm和MVC)的Application里面都包含了UrlMappingsModule。再接着在MVC下尝试,也不知啥原因就映射成功了。然而也发现实际上这个URL映射就是ASP.NET的HTTP管道里面的这个模块起的作用。
对于无知的我,让我去实现一个UrlMappingsModuel实现映射的话,多半会利用HttpResponse的Redirt通过URL重定向来从表面实现上达到这个URL映射的效果。以前刚开始学习ASP.NET的时候就觉得HttpResponse的Redirt就是页面跳转,了解到Http协议的时候才发现这两个还是有区别的。
先弄一个重定向的例子,有一个Action他是重定向到另一个Action——HelloWorld里面

当访问这个RedHelloWorld的时候,通过谷歌的开发者工具看到网络请求是这样子的

页面最终是访问到HelloWorld。可是这并非是请求RedHelloWorld的响应,其响应如上图,状态码302表示重定向,通过Location里面的"/Home/HelloWorld"字段来再次发起请求,最终显示的页面是HelloWorld的响应内容。

(这一下子成了在说HTTP协议的,档次觉得降低了很多)
再看看URL映射的,在Web.Config中添加如下配置

访问/Abc/aaa的时候呈现的是/Home/Index的内容,其响应头是这样子的200 OK

为此我也专门看了一下源码,首先web.config里面的配置肯定是由某个以Section为后缀的配置读取类来获取,那这里的就是UrlMappingsSection。它读取了整个映射信息后会把它们存放到一个以UrlMappingCollection为类型、名为UrlMappings的集合里面

这个集合会在两个地方被使用,一个是UrlMappingsModule,另一个是在ApplicationStepManager里面。这个ApplicationStepManager的具体作用我就没去认真探究,但通过HttpApplication里面的一点代码推测,这是在经典模式下使用的,另一个管道的应该是对应集成模式。这里如果我说错了其他大神可以拍砖,我非常乐意更改过来。

那说回UrlMappingsModule里面的,他是注册了HttpApplication的BeginRequest事件,每当有请求来的时候他都会把要请求的URL拿过去UrlMappings比对一下看存不存在映射,

如果存在了,那就调用HttpContext里面的RewritePath方法去重写这次请求的路径,这个RewritePath是一个公共的方法

而对于HttpResponsed它就在响应头里面把状态码改成301或302,然后注明Location字段,下图节选自HttpResponse的内部方法Redirect重载。

实际上还有另一种响应方式的,他是与WebForm那边有关系的,在使用MVC的时候就用不着了

urlMappings与URL映射的更多相关文章
- ASP.NET MVC 5 Web编程2 -- URL映射(路由原理)
本章将讲述ASP.NET MVC5 的路由原理,即URL映射机制. 简单点就是解释:为什么MVC在浏览器输入地址就能访问到类(或类中的方法)?这是怎么做到的?我自己可以通过.NET写出一个自己的MVC ...
- django中“url映射规则”和“服务端响应顺序”
1.django搜索路径 使用 import 语句时,Python 所查找的系统目录清单. 查看方式: import sys print sys.path ...
- MVC 5 Web编程2 -- URL映射
ASP.NET MVC 5 Web编程2 -- URL映射(路由原理) 2015-02-12 08:50 by hangwei, 704 阅读, 5 评论, 收藏, 编辑 本章将讲述ASP.NET M ...
- CCF CSP 201803-3 URL映射
转载自 https://blog.csdn.net/tigerisland45/article/details/81697594 /* CCF201803-3 URL映射 */ #include &l ...
- SpringMvc的Url映射和传参案例(转)
Springmvc的基本使用,包括url映射.参数映射.页面跳转.ajax和文件上传 以前学习的时候写的代码案例,今天整理笔记的时候找到了,很久没有来园子了,发上来当个在线笔记用吧,免的时间长了又忘了 ...
- SpringMvc的Url映射和传参案例
Springmvc的基本使用,包括url映射.参数映射.页面跳转.ajax和文件上传 以前学习的时候写的代码案例,今天整理笔记的时候找到了,很久没有来园子了,发上来当个在线笔记用吧,免的时间长了又忘了 ...
- 使用 IntraWeb (32) - Url 映射与 THandlers
最简单的 Url 映射是使用 TIWAppForm 的 class 方法: SetURL; THandlers 是 IntraWeb XIV 新增的内容处理器, 它能完成的不仅仅是 Url 映射(转发 ...
- Django - 将URL映射到视图
URLconf 就像是 Django 所支撑网站的目录.它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表.你就是以这种方式告诉 Django,对于这个 URL 调用这段代码, ...
- 搭建RESTful API 之 实现WSGI服务的URL映射
javarestfull 搭建参考 http://blog.csdn.net/hejias/article/details/47424511 问题引出:对于一个稍具规模的网站来说,实现的功能不可能通过 ...
随机推荐
- Web3DGame之路,Babylonjs 和TypeScript学习笔记(一)
一个开源的Webgl3D引擎,javascript or typescript http://www.babylonjs.com 啥是WebGL WebGL 网页图形库,简称WebGL,是一个JS库, ...
- ubuntu下rhythmbox歌名显示乱码问题解决
问题描述:本人装有双系统,一个是win7,另一个是ubuntu12.04LTS版本,所有的歌曲都在windows磁盘下KuGou目录中,这个时候,使用ubuntu的rhythmbox播放的歌曲的时候, ...
- Spark使用实例
1.介绍 Spark是基于Hadoop的大数据处理框架,相比较MapReduce,Spark对数据的处理是在本地内存中进行,中间数据不需要落地,因此速度有很大的提升.而MapReduce在map阶段和 ...
- 一则spring容器启动死锁问题(DefaultListableBeanFactory/DefaultSingletonBeanRegistry)
线上发现一个问题,应用在启动时会卡死,log上并没有什么异常输出,初判应该是死锁问题. 抓现场的thread dump文件, 确实是有两个线程有deadlock问题. 线程一 "HSFBiz ...
- Javascript学习记录——原生JS实现旋转木马特效
昨天学习到了JS特效部分,然后老师讲了旋转木马特效的实现,如上图.不过只是讲了通过点击箭头实现图片的切换,对于点击图片本身以及二者联动却是没有讲解. 本着一颗追求完美的心,今天花费了一个中午终于将整个 ...
- lintcode最长回文子串(Manacher算法)
题目来自lintcode, 链接:http://www.lintcode.com/zh-cn/problem/longest-palindromic-substring/ 最长回文子串 给出一个字符串 ...
- Android标题栏最右边添加按钮
step1:重写activity的onCreateOptionsMenu方法 @Override public boolean onCreateOptionsMenu(Menu menu){ Menu ...
- jQuery.unique引发一个血案
项目开发过程中,PM说系统只要在一个特定的浏览器中运行就好,但是在其他的浏览器中不能出现逻辑的错误,所以在开发过程中,前端和后台选择是Chrome浏览器,没有仔细测试Firefox和IE.但是昨天PM ...
- iOS开发之使用XMPPFramework实现即时通信(三)
你看今天是(三)对吧,前面肯定有(一)和(二),在发表完iOS开发之使用XMPPFramework实现即时通信(一)和iOS开发之使用XMPPFramework实现即时通信(二)后有好多的小伙伴加我Q ...
- MySQL监控利器-Innotop
Innotop是一款十分强大的MySQL监控工具,用perl所写,通过文本模式展示MysQL服务器和Innodb的运行状况. 安装innotop 下载地址:https://github.com/inn ...