使用Application_BeginRequest进行url重写

时间:2008-12-01 11:37:27

标签: asp.net url-rewriting

到目前为止,我们一直在使用custon 404页面重写URL:url不会映射到站点中的任何文件,我们将IIS配置为向aspx页面发送404错误,该页面将这些url重定向到正确的URL。
现在我们想停止使用重定向,所以在阅读了Scott Guthrie关于Url Rewriting的文章之后,我想在Global.asax中使用Application_BeginRequest。问题是我们的很多网址都没有重写,可以在没有任何干预的情况下到达正确的地方。我担心现在每个请求都必须通过Application_BeginRequest方法(即使是未重写的url),我担心它会减慢加载时间。
你怎么看?使用Application_BeginRequest时加载时间是一个问题吗?

5 个答案:

答案 0 :(得分:4)

无论如何,每个请求都通过Application_BeginRequest。

您需要添加一些逻辑,以便只更改那些需要重写的页面。

这一小部分逻辑不会非常昂贵。

我已经习惯了,并没有注意到性能受到的影响。

答案 1 :(得分:3)

如果您打算更频繁地使用它并且模仿Apache模块mod_rewrite,那里有非常强大的解决方案,我喜欢这个,因为我已经使用它并且它没有给我带来任何问题:

http://www.codeplex.com/IIRF

或:

http://urlrewriter.net/

http://www.managedfusion.com/products/url-rewriter/

您可以在这篇文章中阅读更多选项:

ASP.NET URL Rewriting

正如约什所说,必不可少的文章是: http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

答案 2 :(得分:3)

给可能遇到麻烦的其他人留言。确保

<modules runAllManagedModulesForAllRequests="true">
中的

答案 3 :(得分:2)

那篇文章有点陈旧......现在.NET框架中有更好的方法。有趣的是我曾经做过你正在做的事情(劫持错误处理程序)。

http://www.singingeels.com/Blogs/Nullable/2007/09/14/URL_ReWriting_The_Right_Way_Its_Easy.aspx

这就是我认为你现在想做的事情。哦,关于性能......为你的页面时间增加大约0.00001秒。

答案 4 :(得分:1)

Scott Guthrie的article是一个很好的,但我很好奇为什么你选择通过Global.asax而不是像他建议的那样使用HttpModule。此外,无论如何,Asp.Net页面生命周期都会遍历Global.asax中的每个事件。

HttpModule事件运行每一个请求,只要你没有在你的逻辑中做任何疯狂的事情,那么你应该好好去。甚至Application_BeginRequest方法中的数据库查找也可以通过适当的缓存来缓解。

如有疑问,请向Trace写一些信息,以便准确了解您的日常工作需要多长时间。我想你会发现,与你最昂贵的操作(数据库查找)相比,时间可以忽略不计。