2008-11-26 80 views
2

在asp.net 3.5中,我重写URL为什么不重写URL?

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

以下

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

我使用这个代码来做到这一点:

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

它在本地很好地工作,但是当我上传到远程web服务器时,我得到一个404当tryi ng来引用上面的页面。任何建议为什么它在本地工作,但不是远程?

+0

如果是IIS7(Integrated或Classic),你能否提到IIS版本(本地和远程)以及它的运行模式? – 2008-11-26 07:07:01

回答

2

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

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

1

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

0

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

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