用asp.net重写URL。是否需要配置?

时间:2010-08-30 08:57:40

标签: asp.net configuration url-rewriting

我正在尝试在我的项目中启用重写的网址。 这篇文章中描述的非常好:urlrewriting by scottgu 当我在localhost上运行它时,它工作得非常好,但是一旦我将它上传到我的主机(.net 3.5),它就无法正常工作!我总是被重定向到404页面!

是否需要配置才能启用此功能? 正如斯科特说不,但我不知道为什么它不起作用......

感谢

//更新2.09.2010

实际上是否有一种方法可以在没有iis7的情况下启用路由或重写,或者能够在服务器上安装类似ISAPI Rewrite的模块? 看起来我有一个糟糕的asp.net主机...

3 个答案:

答案 0 :(得分:4)

在您的localhost环境中,您可能正在ASP.NET开发服务器上运行该网站。该服务器设置为捕获所有请求(*。*)并通过ASP.NET管道运行它们。

另一方面,

II6被配置为仅通过ASP.NET管道发送一些请求(即* .aspx,* .asmx,* .ashx)。因此,如果您正在尝试捕获对“/ my / fine / url”这样的URL的请求,该URL将永远不会传递给ASP.NET处理程序,因此不会被重写。

您可以在网站的应用程序配置中更改此配置:

  1. 打开IIS管理器并右键单击该网站,选择“属性”
  2. 在“主目录”选项卡上,单击“配置...”按钮。
  3. 单击“插入...”按钮以插入通配符应用程序映射。
  4. 在“可执行文件:”中插入aspnet_isapi.dll的路径,在我的情况下是C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll(注意:此路径可能在您的服务器上有所不同)。
  5. 请记得取消选中“验证该文件是否已存在”
  6. 点击OK!
  7. 等等!现在,您的所有请求都应该定向到ASP.NET处理程序,因此无论扩展名如何,都会在您的URL重写器中捕获。

    但我必须承认,我有点不确定这将如何影响您网站的性能,通过ASP.NET处理程序路由所有静态文件,CSS,图像等请求。也许那里的其他人有话要说。

    /丹尼斯: - )

答案 1 :(得分:1)

在IIS6中有两种获取无扩展路由的方法:

a)ISAPI重写或其他ISAPI网址重写器 b)使用通配符映射到aspnet_isapi.dll

有关详细说明,请参阅this blog post

答案 2 :(得分:0)

以下是如何在ASP.NET WebForms中使用新的System.Web.Routing的示例。

http://deepumi.wordpress.com/2010/02/27/url-routing-in-asp-net-web-forms/