.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文件中输出的内容。是不是很简单,接口项目建议使用此虚拟化路径。
如有不明白的可下载此附件源码仔细研究。