asp.net[web.config] httphandlers 与实现自由定义访问地址
今天一起来看一个简单的例子,主要是用来实现一个映射功能,
我们一般访问一个网址的时候比如是这样的
http://localhost:6166/WebSite1/api/request.aspx?strtext=123
那么大家一定都会说,在网站WebSite1的api目录下一定有request.aspx这样一个文件。
那么我今天要告诉你的就是没有这个文件。如下图


你没有看错,没有报任何的错误,
那这是怎么回事呢。
我们现在可以来看看这个目录下有一个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
看代码
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文件定义多个文件名来访问,这样前台怎么也找不到你实际访问的是那个页面,而且还可以达到封装的效果。让非开发着不能轻易的看到你的页面代码。
因为这个是可以放在一个类库里面的。
如下

也算是加了一层安全机制吧,
并且方便了大家控制
我们不管访问的是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 与实现自由定义访问地址的更多相关文章
- ASP.NET Web.config学习
花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <? ...
- Asp.net Web.Config - 配置元素 caching
Asp.net Web.Config - 配置元素 caching 记得之前在写缓存DEMO的时候,好像配置过这个元素,好像这个元素还有点常用. 一.caching元素列表 元素 说明 cache ...
- ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法
ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法 第一种情况,本地开发时,使用本地数据库,如下面的代码 <connectionStrings& ...
- ASP.NET Web.config
分析: .NET Web 应用程序的配置信息(如最常用的设置ASP.Net Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中.当你通过VB.NET新 建 一个Web应用程序后,默认 ...
- asp.net web.config 设置Session过期时间
在Asp.net中,可以有四处设置Session的过期时间:(原文作者:望月狼地址:http://www.cnblogs.com/wangyuelang0526/) 一.全局网站(即服务器)级 IIS ...
- asp.net web.config的学习笔记
原文地址:http://www.cnblogs.com/Bulid-For-NET/archive/2013/01/11/2856632.html 一直都对web.config不太清楚.这几天趁着项目 ...
- asp.net web.config配置节说明
web.config 文件查找规则: (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找. (2)如果当前页面所 ...
- asp.net web.config配置节说明(转发)
原文地址:http://www.cnblogs.com/qingyuan/articles/1501644.html web.config 文件查找规则: (1)如果在当前页面所在目录下存在 ...
- ASP.NET web.config中的连接字符串
在ASP.NET的web.config中,可以用两种方式来写连接字符串的配置. <configuration> <appSettings> <add key=" ...
随机推荐
- 解决UC浏览器或微信浏览器上flex兼容问题
在UC浏览器上使用display:flex;时会不起作用,要加上兼容性写法,如下 display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ disp ...
- Java笔记:关键字
关键字 描述 abstract 抽象方法,抽象类的修饰符 assert 断言条件是否满足 boolean 布尔数据类型 break 跳出循环或者label代码段 byte 8-bit 有符号数据类型 ...
- php7 安装redis扩展
从pecl下载的phpredis扩展在make时报错,google了一下,解决办法,因为phpredis 有专门为php7的分支,所以先git clone phpredis下来 git clone h ...
- C#并行
/// <summary> ///该实现方式并不是最高效的 ///只是举个例子,说明用锁来保护共享状态 /// </summ ...
- FragmentPagerAdapter加载fragment并使用setUserVisibleHint()处理预加载时遇到的坑,给textview赋值时出现的空指针异常
FragmentPagerAdapter加载fragment并使用setUserVisibleHint()处理预加载时,给textview赋值时出现的空指针异常 public class BaseFr ...
- ******IT公司面试题汇总+优秀技术博客汇总
滴滴面试题:滴滴打车数据库如何拆分 前端时间去滴滴面试,有一道题目是这样的,滴滴每天有100万的订单,如果让你去设计数据库,你会怎么去设计? 当时我的想法是根据用户id的最后一位对某个特殊的值取%操作 ...
- PHP webservice的使用
提到php的webservice.之前还是比较陌生的,因为接触的少呀,几乎在所有的公司中没用过,仅仅用过的一次好像是接入一个第三方的短信通道,用的是SOAP|WSDL. 一个很极端的话“webserv ...
- 【leetcode】Number of 1 Bits
题目描述: Write a function that takes an unsigned integer and returns the number of '1' bits it has (als ...
- iOS多播放器封装
今年在做直播业务的时候遇到一些问题,就是在一个套播放器UI中需要多种不同的播放器(AVPlayer.IJKPlayer.AliPlayer)支持,根据ABTest开关来切换具体使用哪种播放器,并且还要 ...
- 用 CallerMemberName Attribute 和 EqualityComparer 统一处理类的属性值变化
当需要实现类似 INotifyPropertyChanged 这样的接口的时候,每一个属性去判断值是否变化,然后触发事件什么的,太麻烦了,如果能用一个方法统一处理就好了. 好在真的可以做到.这个博文说 ...