2

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

4

5 回答 5

4

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

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

那一点点逻辑不会很昂贵。

我已经使用了它,并且根本没有注意到性能下降。

于 2008-12-01T11:53:23.483 回答
3

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

http://www.codeplex.com/IIRF

或者:

http://urlrewriter.net/

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

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

ASP.NET URL 重写

正如乔希所说,基本文章是: http ://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

于 2008-12-01T12:10:57.910 回答
3

只是给可能遇到麻烦的其他人的便条。确保拥有

<modules runAllManagedModulesForAllRequests="true">

在你的 web.config

于 2010-02-11T10:57:17.933 回答
2

那篇文章有点老了......现在.NET框架中有更好的方法。有趣的是,我曾经完全按照您正在做的事情(劫持错误处理程序)。

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

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

于 2008-12-01T12:11:54.443 回答
1

Scott Guthrie 的文章是一篇不错的文章,但我很好奇您为什么选择通过 Global.asax 执行此操作,而不是像他建议的那样使用 HttpModule。此外,无论如何,Asp.Net 页面生命周期都会贯穿 Global.asax 中的每一个事件。

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

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

于 2008-12-01T12:05:19.997 回答