.Net中处理程序映射-访问路径虚拟化,不知道从哪里翻出来了这个好多年前的DEMO,意思就是将Index.cs虚拟化成一个可访问到的html页面
特别是在接口开发设计中,可以从一定程度上隐藏页面的真实路径,实际上在.Net中,一个.cs后缀的文件属于一个类文件,不能直接用于外部访问,
如果非要直接访问某个.cs类文件的话,只能通过处理映射关系来处理了,相当于给此文件起一个可供直接访问的别名。
第一步:添加一个类库项目ProHttpHandler,在此项目下创建一个Pub/Index.cs类文件
01 | using System; |
02 | using System.Web; |
03 |
04 | namespace ProHttpHandler.Pub |
05 | { |
06 | /// <summary> |
07 | /// 处理程序映射 |
08 | /// 作者:www.yunjson.com |
09 | /// </summary> |
10 | public class Index : IHttpHandler |
11 | { |
12 | /// <summary> |
13 | /// 您将需要在您网站的 web.config 文件中配置此处理程序, |
14 | /// 并向 IIS 注册此处理程序,然后才能进行使用。有关详细信息, |
15 | /// 请参见下面的链接: http://go.microsoft.com/?linkid=8101007 |
16 | /// </summary> |
17 | #region IHttpHandler Members |
18 |
19 | public bool IsReusable |
20 | { |
21 | // 如果无法为其他请求重用托管处理程序,则返回 false。 |
22 | // 如果按请求保留某些状态信息,则通常这将为 false。 |
23 | get { return true ; } |
24 | } |
25 |
26 | public void ProcessRequest(HttpContext context) |
27 | { |
28 | //在此写入您的处理程序实现。 |
29 | context.Response.Write( "Hello, World 处理程序映射" ); |
30 | } |
31 |
32 | #endregion |
33 | } |
34 | } |
第二步,添加一个名为ProMapping的Web项目,在此项目下,添加一个Pub目录,在Pub目录下随便新建一个html页面:Pub/xxxxxx.html
01 | <!DOCTYPE html> |
02 | < html > |
03 | < head > |
04 | < title ></ title > |
05 | </ head > |
06 | < body > |
07 | <!--作者:www.yunjson.com--> |
08 | 打开浏览器后,把浏览器地址页面"HTMLPage1.html"换成index.html 打开试试 |
09 | </ body > |
10 | </ html > |
第三步,在步骤二里提到的ProMapping项目中,Pub目录下,新建一个Pub/Web.config文件,按如下完成配置(具体参数可自行修改)
以下配置相当于映射了一个index.html的地址,去访问ProHttpHandler项目中的Pub/Index.cs类文件
01 | <? xml version = "1.0" ?> |
02 | < configuration > |
03 | <!--IIS经典模式下使用作者:www.yunjson.com--> |
04 | < system.web > |
05 | < httpHandlers > |
06 | < add path = "index.html" verb = "*" type = "ProHttpHandler.Pub.Index" /> |
07 | </ httpHandlers > |
08 | </ system.web > |
09 | <!--<system.webServer> |
10 | --> |
11 | <!--IIS集成模式下使用--> |
12 | <!-- |
13 | <handlers> |
14 | <add name="Pub" path="index.html" verb="*" type="ProHttpHandler.Pub.Index"/> |
15 | </handlers> |
16 | <modules runAllManagedModulesForAllRequests="true"/> |
17 | </system.webServer>--> |
18 | </ configuration > |
第四步,完成以上三步设置后,即可运行ProMapping即Web项目下刚刚新建的Pub/xxxxxx.html文件
运行到这里只是启动了项目,可以试试在Config中设置的那个index.html,浏览器地址栏的地址直接改成index.html试试看
页面输出的Hello, World 处理程序映射,即是那个Index.cs文件中输出的内容。是不是很简单,接口项目建议使用此虚拟化路径。
如有不明白的可下载此附件源码仔细研究。