重定向请求的最有效方法是什么?

时间:2014-02-13 15:45:57

标签: asp.net asp.net-mvc redirect asp-classic

我正在使用一堆经典的ASP内容对传统的ASP.NET站点进行现代化。有几十个aspaspx页面只是重定向:

'this is a file called Something.aspx
<%@ Language=VBScript %>
<% Response.Redirect("/Something/Default.aspx", true) %>

这些文件遍布整个应用程序,我想要删除所有这些文件,并将此重定向逻辑合并到一个表中的某个表中:

From,To
/Something.aspx,/Something/Default.aspx
/sub/SomeOtherThing.asp,/overhere/NewVersion.aspx
...

然后,在Application_BeginRequest方法中,我想我会检查此表,如果传入请求与From条目匹配,我会进行重定向。但这似乎效率很低,因为那时每个请求都会产生表查找的开销。

我还考虑过让丢失的文件请求导致404错误,然后执行查找和重定向,因此开销只会发出少得多的请求,但这似乎有点缺憾。

所以问题是:完成我想要做的事情的最佳(或合理有效)方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用URL Rewrite的Rewrite Map功能来处理重定向。

<rewriteMap name="MyRewriteMap">
  <add key="a.html" value="b.html" />
  <add key="c.aspx" value="d.aspx" />
  <add key="e.php" value="f.php" />
</rewriteMap>

或者,您可以实现HttpModule来处理重定向。从数据存储加载映射并将其缓存以备将来请求。然后根据映射检查任何404错误的请求URL。仅处理404错误比检查每个请求更有效。

答案 1 :(得分:0)

你在IIS7(或更高版本)?如果你是,你可以安装url rewrite模块并将所有重定向放在web.config

http://www.iis.net/learn/extensions/url-rewrite-module/using-the-url-rewrite-module