asp.net HttpModule可以转发请求到asp.dll吗?

时间:2009-10-14 15:26:28

标签: iis url-rewriting asp-classic

我想要实现的目标:

使用asp.net应用程序拦截对.asp文件的请求 然后重新将网址写入搜索引擎友好的内容中 然后将请求传递到asp.dll以处理请求。

我是如何尝试实现它的:

我正在尝试通过

让smartgencia url重写为经典的asp应用程序工作
  1. 更改网站的IIS映射,以便.asp扩展由asp.net应用程序处理。
  2. intelligencia asp.net url re-writer然后重写网址。
  3. 然后将请求的.asp页面转发到asp.dll进行处理。可以这样做吗?有什么想法吗?
  4. 我的局限:

    • 共享主机帐户,因此我无法在服务器上安装isapi过滤器。

    听起来像是可以通过编写HTTPModule来完成吗?

    我考虑过301重定向,但我担心谷歌排名问题。

1 个答案:

答案 0 :(得分:2)

由于管道的工作方式,.NET HttpModule无法将请求转发到II6中的Classic ASP。当您的.NET模块执行时,您处于ASP.NET处理程序中,无法传输到ASP处理程序。

IIS7具有集成管道,允许您让.NET HttpModule将请求重写为Classic ASP处理程序。

您可以使用自定义404处理程序清除响应中的404状态,并执行Server.Transfer或Server.Execute您的页面。唯一的问题是你不能传递查询字符串参数,所以你需要解析页面请求并手动提取变量。

我使用Smart404的修改版本来处理SEO友好网址,移动文件等。他们称该功能为“virtual_aliases”。