今天一起来看一个简单的例子,主要是用来实现一个映射功能,
我们一般访问一个网址的时候比如是这样的
http://localhost:6166/WebSite1/api/request.aspx?strtext=123

那么大家一定都会说,在网站WebSite1的api目录下一定有request.aspx这样一个文件。
那么我今天要告诉你的就是没有这个文件。如下图

你没有看错,没有报任何的错误,
那这是怎么回事呢。
我们现在可以来看看这个目录下有一个Webconfig文件,咱们打开看一下

  1. <?xml version="1.0"?>
  2. <configuration>
  3. <!--IIS经典模式下使用-->
  4. <system.web>
  5. <httpHandlers>
  6. <add path="request.aspx" verb="*" type=" Bll.Handler.Test"/>
  7. <add path="test.aspx" verb="*" type=" Bll.Handler.Test"/>
  8. </httpHandlers>
  9. </system.web>
  10. <!--IIS集成模式下使用-->
  11. <!--<system.webServer>
  12. <handlers>
  13. <add name="request" path="request.aspx" verb="*" type=" Bll.Handler.Test"/>
  14. <add name="test" path="test.aspx" verb="*" type=" Bll.Handler.Test"/>
  15. </handlers>
  16. </system.webServer>-->
  17. </configuration>

这是什么意思呢。
这里面有两种配置,主要是适用于IIS的集成模式和经典模式,只是配置不同,暂时没有其他的不同点
大家知道就行了,
下面以经典模式来分析下吧

  1. <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
看代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Web;
  6. using Bll;
  7.  
  8. namespace Bll.Handler
  9. {
  10. class Test : IHttpHandler
  11. {
  12. public void ProcessRequest(HttpContext context)
  13. {
  14. //接收这个参数
  15. string strtext = context.Request["strtext"].Trim();
  16. //输出这个参数
  17. context.Response.Write(strtext);
  18. }
  19. public bool IsReusable
  20. {
  21. get
  22. {
  23. return false;
  24. }
  25. }
  26. }
  27. }

我的Webconfig有两个配置意思就是说我们可以给这个Test.cs文件定义多个文件名来访问,这样前台怎么也找不到你实际访问的是那个页面,而且还可以达到封装的效果。让非开发着不能轻易的看到你的页面代码。
因为这个是可以放在一个类库里面的。
如下

也算是加了一层安全机制吧,
并且方便了大家控制
我们不管访问的是http://localhost:6166/WebSite1/api/request.aspx?strtext=123
还是http://localhost:6166/WebSite1/api/test.aspx?strtext=123
都是在访问一个一般处理程序Test.cs
而且这个访问的名字大家可以随便配置,我个人感觉还是很方便的。
有兴趣的朋友可以试试

asp.net[web.config] httphandlers 与实现自由定义访问地址的更多相关文章

  1. ASP.NET Web.config学习

    花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <? ...

  2. Asp.net Web.Config - 配置元素 caching

    Asp.net Web.Config - 配置元素 caching 记得之前在写缓存DEMO的时候,好像配置过这个元素,好像这个元素还有点常用. 一.caching元素列表   元素 说明 cache ...

  3. ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法

    ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法 第一种情况,本地开发时,使用本地数据库,如下面的代码 <connectionStrings& ...

  4. ASP.NET Web.config

    分析: .NET Web 应用程序的配置信息(如最常用的设置ASP.Net Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中.当你通过VB.NET新 建 一个Web应用程序后,默认 ...

  5. asp.net web.config 设置Session过期时间

    在Asp.net中,可以有四处设置Session的过期时间:(原文作者:望月狼地址:http://www.cnblogs.com/wangyuelang0526/) 一.全局网站(即服务器)级 IIS ...

  6. asp.net web.config的学习笔记

    原文地址:http://www.cnblogs.com/Bulid-For-NET/archive/2013/01/11/2856632.html 一直都对web.config不太清楚.这几天趁着项目 ...

  7. asp.net web.config配置节说明

    web.config 文件查找规则:      (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找.      (2)如果当前页面所 ...

  8. asp.net web.config配置节说明(转发)

    原文地址:http://www.cnblogs.com/qingyuan/articles/1501644.html web.config 文件查找规则:      (1)如果在当前页面所在目录下存在 ...

  9. ASP.NET web.config中的连接字符串

    在ASP.NET的web.config中,可以用两种方式来写连接字符串的配置. <configuration> <appSettings> <add key=" ...

随机推荐

  1. xcode添加快捷代码块

    添加快捷代码块 在开发过程中,一些常用的代码段,我们可以设置成快捷代码段来快速实现代码的编写. 如上图中的属性的设置,它们都有相同重复的代码@property (nonatomic, strong), ...

  2. 【笔记】mysql两条数据的某个属性值互换

    update groupuser as g1 join groupuser as g2 on (g1.user_id=1 and g2.user_id = 2) or(g1.user_id = 2 a ...

  3. Centos YUM 升级PHP

    升级到5.3.3 1.删除已安装文件  yum remove php-*   2.安装 PHP 5.3   yum -y install php53*     升级到5.6   1.删除已安装文件   ...

  4. LINUX命令批量替换文件中的字符串

    sed -i "s/abcd/1234/g" `grep abcd -rl /home/data` find /data/web  -type f -exec  sed -i 's ...

  5. byte[] 转十进制

    short s = 0; //一个16位整形变量,初值为 0000 0000 0000 0000 byte b1 = 1; //一个byte的变量,作为转换后的高8位,假设初值为 0000 0001 ...

  6. [JAVA] 注解学习@interface

    一直都看框架级的代码中都是各种annotation,一起来看看到底怎么弄的 例子1:直接定义一个annotation,并使用之: package com.base.annotation.example ...

  7. Spring MVC初次相见

    1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...

  8. Xcode显示出错

    warning: control reaches end of non-void function 表示有返回值的函数没有return.

  9. 自己用的jquery经常用的工具command

    var Cmd = { Entity: { QueryString: {}, }, RootPath: function () { var pathName = window.location.pat ...

  10. jquery插件开发

    jQuery是一个封装的很好的类,比如我们用语句$("#btn1") 会生成一个 jQuery类的实例. 一.jQuery插件开发注意要点 1.使用闭包,避免全局依赖,避免第三方破 ...