今天一块儿来看一个简单的例子,主要是用来实现一个映射功能,
咱们通常访问一个网址的时候好比是这样的
http://localhost:6166/WebSite1/api/request.aspx?strtext=123web
那么你们必定都会说,在网站WebSite1的api目录下必定有request.aspx这样一个文件。
那么我今天要告诉你的就是没有这个文件。以下图api
你没有看错,没有报任何的错误,
那这是怎么回事呢。
咱们如今能够来看看这个目录下有一个Webconfig文件,我们打开看一下安全
<?xml version="1.0"?> <configuration> <!--IIS经典模式下使用--> <system.web> <httpHandlers> <add path="request.aspx" verb="*" type=" Bll.Handler.Test"/> <add path="test.aspx" verb="*" type=" Bll.Handler.Test"/> </httpHandlers> </system.web> <!--IIS集成模式下使用--> <!--<system.webServer> <handlers> <add name="request" path="request.aspx" verb="*" type=" Bll.Handler.Test"/> <add name="test" path="test.aspx" verb="*" type=" Bll.Handler.Test"/> </handlers> </system.webServer>--> </configuration>
这是什么意思呢。
这里面有两种配置,主要是适用于IIS的集成模式和经典模式,只是配置不一样,暂时没有其余的不一样点
你们知道就好了,
下面以经典模式来分析下吧网站
<add path="request.aspx" verb="*" type=" Bll.Handler.Test"/>
path这个呢就是咱们访问的网页地址,就是上面输入的,咱们找不到的那个文件名
而后对应的处理程序是type=" Bll.Handler.Test"
verb="*" 是指定接收的方式,*是Get,Post均可以,也能够直接写Post这样就只接收Post提交了。
如今你们明白了吧
你访问request.aspx其实访问的就是Bll.Handler.Test.cs
看代码spa
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using Bll; namespace Bll.Handler { class Test : IHttpHandler { public void ProcessRequest(HttpContext context) { //接收这个参数 string strtext = context.Request["strtext"].Trim(); //输出这个参数 context.Response.Write(strtext); } public bool IsReusable { get { return false; } } } }
个人Webconfig有两个配置意思就是说咱们能够给这个Test.cs文件定义多个文件名来访问,这样前台怎么也找不到你实际访问的是那个页面,并且还能够达到封装的效果。让非开发着不能轻易的看到你的页面代码。
由于这个是能够放在一个类库里面的。
以下3d
也算是加了一层安全机制吧,
而且方便了你们控制
咱们无论访问的是http://localhost:6166/WebSite1/api/request.aspx?strtext=123
仍是http://localhost:6166/WebSite1/api/test.aspx?strtext=123
都是在访问一个通常处理程序Test.cs
并且这个访问的名字你们能够随便配置,我我的感受仍是很方便的。
有兴趣的朋友能够试试code