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
而且這個訪問的名字大家可以隨便配置
轉載于:https://www.cnblogs.com/asdyzh/p/9741520.html
總結
以上是生活随笔為你收集整理的asp.net[web.config] httphandlers 与实现自由定义访问地址的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: “杂鸟何翩翾”上一句是什么
 - 下一篇: 《感鹤》第六句是什么