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

页面输出的Hello, World 处理程序映射,即是那个Index.cs文件中输出的内容。是不是很简单,接口项目建议使用此虚拟化路径。
如有不明白的可下载此附件源码仔细研究。