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=" ...
随机推荐
- mybatis 配置连接池
<!-- 配置数据源 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidData ...
- 求两个数字的最大公约数-Python实现,三种方法效率比较,包含质数打印质数的方法
今天面试,遇到面试官询求最大公约数.小学就学过的奥数题,居然忘了!只好回答分解质因数再求解! 回来果断复习下,常用方法辗转相除法和更相减损法,小学奥数都学过,很简单,就不细说了,忘了的话可以百度:ht ...
- js获取网页中宽高度集合
document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.docume ...
- python之面向对象
首先我们应该知道,python在设计之初就已经是一门面向对象的语言,所以说python中创建一个类和对象是很容易的. 面向对象的技术简介 类(class):用来描述具有相同的属性和方法的对象的集合.它 ...
- 何为SSH协议?
该文来自百度百科,自我收藏. SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH ...
- java中的集合/容器的数据结构
最近双11在网上买了本 数据结构和算法--java语言实现,正在啃,同时在慕课网上的学习进度来到了集合框架这一类,对于这一块算是刚刚了解,本科的时候数据结构学习的是严蔚敏老师的那本数据结构,代码的实现 ...
- *** wechat-php-sdk 微信公众平台php开发包
wechat-php-sdk 微信公众平台php开发包,细化各项接口操作,支持链式调用,欢迎Fork此项目weixin developer SDK. 项目地址:https://github.com/d ...
- 题目:求1+2+…+n,
题目:求1+2+-+n, 要求不能使用乘除法.for.while.if.else.switch.case等关键字 以及条件判断语句(A?B:C). java 实现 public class sum { ...
- 进击的Python【第十章】:Python的socket高级应用(多进程,协程与异步)
Python的socket高级应用(多进程,协程与异步)
- border-radius四个值的问题
我们都知道border-radius后面如果是4个值的话,依次代表的是左上角.右上角.右下角.左下角. 但是这样写呢:border-radius:10px 20px 30px 40px/50px 40 ...