为什么url重写不起作用?

时间:2008-11-26 06:32:31

标签: asp.net iis url module rewrite

在asp.net 3.5中,我正在重写网址

http://www.abc.com/archive/1108/harpersdecember

以下

http://www.abc.com/article.aspx?docId=78

我正在使用此代码执行此操作:

                Context.RewritePath("/article.aspx?docId=78");

它在本地工作正常但是当我上传到远程Web服务器时,我在尝试引用上面的页面时得到404。有什么建议为什么它在本地但不是远程工作?

3 个答案:

答案 0 :(得分:2)

您可能需要在远程服务器上的IIS中创建通配符映射,以便ASP.Net处理所有请求。如果不这样做,任何没有.ASPX的URL都不会通过您的URL重写代码运行。

Scott Guthrie's blog对此(及其他可能使用的原因)有一个很好的解释。

答案 1 :(得分:1)

不是“可能” - 你肯定需要创建一个通配符映射。 Visual Studio使用cassini Web服务器,它基本上通过.net传递所有请求。 IIS只将特定的映射请求(默认情况下为.aspx,.asmx等)转发到.net - 在asp.net中重写URL需要添加一个新的映射来首先获取对asp.net的请求

答案 2 :(得分:0)

听起来像生产服务器没有默认的aspx页面,即:default.aspx。如果是,它会将请求重新路由到您的处理程序。

验证这一点的简单方法是创建一个目录并在其中放置一个default.aspx文件,并尝试仅使用目录名称请求它,即:server.com/newdir/ 如果这给你一个404,那么你肯定知道它。