gpt4 book ai didi

c# - HttpHandler 不重写

转载 作者:行者123 更新时间:2023-11-30 13:18:23 25 4
gpt4 key购买 nike

我正在为 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;
}
}
}

然后我在 web.config 中有以下动词:

<httpHandlers>
<add verb="*" path="*" type="Tizma.CMS.Runtime.HttpHandler"/>
</httpHandlers>

我基本上希望所有传入的 URL 都经过这个重写器。当我运行它时,ProcessRequest 触发,但 RewritePath 永远不会到达 default.aspx。

请记住,这只是一个测试,最终 default.aspx 将按照 ?pageid=2 行传递一个查询字符串,我只是想先弄清楚 httphandlers 是如何工作的。

我做错了什么?

最佳答案

Andy - 你不能在处理程序中调用 RewritePath() - 那时已经晚了。当你点击你的处理程序时,请求已经路由到完成并且 RewritePath() 不做任何事情。

RewritePath 必须在请求周期的早期调用(如 BeginRequest 或 CacheModule 启动之前的任何内容)才能有效,因此您很可能需要一个 HttpModule 并挂接适当的早期管道事件。

关于c# - HttpHandler 不重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1316622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com