很简单的小应用,通过httphandler,把后缀名是.php的请求交给指定的Httphandler处理即可。
首先要做的是在web.config配置好。
<httpHandlers>
<add verb="*" path="*.php" type="FakePHP.JustFakeIt"/>
</httpHandlers>
httpHandlers结点是在system.web结点下的。
常规配置如上,verb指定是post还是get,path的作用类似于限制请求的路径,比如上面,只要请求是php后缀名的,才能由此httpHandler处理。
type就是指定处理该请求的dll模块,或者类型。本例中就是FakePHP.JustFakeIt这个类,此类实现了IHttpHandler接口。该节点详细说明参考
http://msdn.microsoft.com/en-us/library/aa903367(v=vs.71).aspx
剩下的事情,就是要实现这个处理请求,创建FakePHP.JustFakeIt这样一个类型,然后编码。
- using System.Web;
- using System.IO;
- using System.Net;
- namespace FakePHP
- {
- /// <summary>
- /// JustFakeIt 的摘要说明
- /// </summary>
- public class JustFakeIt : IHttpHandler
- {
- public void ProcessRequest(HttpContext context)
- {
- context.Response.ContentType = "TEXT/HTML";
- string page = context.Request.Path;
- WebRequest mywebReq;
- WebResponse mywebResp;
- StreamReader sr;
- string strHTML;
- mywebReq = WebRequest.Create(HttpContext.Current.Request.Url.OriginalString.Replace(context.Request.Path, "/default.aspx"));
- mywebResp = mywebReq.GetResponse();
- sr = new StreamReader(mywebResp.GetResponseStream());
- strHTML = sr.ReadToEnd();
- context.Response.Write(strHTML);
- }
- public bool IsReusable
- {
- get
- {
- return false;
- }
- }
- }
- }
然后运行,加上输入url,请求为任意一个php文件。比如a.php,http://localhost:26962/a.php
那么就可以得到真实的default.aspx的内容了。
以上只是HttpHandler的一个小应用示例,通过这种方法,可以实现一些特殊需求。
附件:http://down.51cto.com/data/2361572
本文转自cnn23711151CTO博客,原文链接:http://blog.51cto.com/cnn237111/1022315 ,如需转载请自行联系原作者