我正在为URL重写编写一个简单的HttpHandler,但我正在打砖墙.
我创建了一个非常简单的HttpHandler类来测试:
public class HttpHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.RewritePath("default.aspx", false);
//Rewriter.Rewrite(context);
}
public bool IsReusable
{
get
{
return true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在web.config中有以下动词:
<httpHandlers>
<add verb="*" path="*" type="Tizma.CMS.Runtime.HttpHandler"/>
</httpHandlers>
Run Code Online (Sandbox Code Playgroud)
我基本上希望所有传入的URL都通过这个重写器.当我运行它时,ProcessRequest触发,但RewritePath永远不会到达default.aspx.
请记住,这只是一个测试,最终default.aspx将传递一个查询字符串?pageid = 2我只想弄清楚httphandlers如何工作.
我究竟做错了什么?
Ric*_*ahl 12
Andy - 你不能在一个处理程序中调用RewritePath() - 那时为时已晚了.当你点击你的处理程序时,请求已经路由到完成,RewritePath()没有做任何事情.
必须在请求周期的早期调用RewritePath(比如BeginRequest或CacheModule启动之前的任何内容)才能生效,因此您很可能需要一个HttpModule并挂钩相应的早期管道事件.
| 归档时间: |
|
| 查看次数: |
2051 次 |
| 最近记录: |