2

在 asp.net 3.5 中,我正在重写 url

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

到以下

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

我正在使用这段代码来做到这一点:

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

它在本地运行良好,但是当我上传到远程 Web 服务器时,我在尝试引用上述页面时得到 404。有什么建议为什么它可以在本地工作但不能在远程工作?

4

3 回答 3

2

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

在Scott Guthrie 的博客上有一个很好的解释(以及您可能使用它的其他原因)。

于 2008-11-26T10:25:27.200 回答
1

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

于 2008-11-26T10:40:39.230 回答
0

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

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

于 2008-12-04T18:20:38.677 回答