【问题标题】:Url rewriting with asp.net. is there a configuration needed?用 asp.net 重写 URL。是否需要配置?
【发布时间】:2011-04-05 16:09:17
【问题描述】:

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

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

谢谢

// 更新 2.09.2010

实际上有没有一种方法可以在没有 iis7 或在服务器上安装诸如 ISAPI Rewrite 之类的模块的情况下启用路由或重写? 看起来我的 asp.net 主机不好...

【问题讨论】:

  • 您是否尝试过在 Application_BeginRequest 中查看您的 url 是如何重写的?
  • 你的 IIS 版本是多少?
  • 我怎么能看到这个?我使用这种方法: void Application_BeginRequest(object sender, EventArgs e) { string fullOrigionalpath = Request.Url.ToString(); if (fullOrigionalpath.Contains("/Products/Books.aspx")) { Context.RewritePath("/Products.aspx?Category=Books"); } .... }

标签: asp.net configuration url-rewriting


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    另一方面,II6 被配置为仅通过 ASP.NET 管道发送一些请求(即 *.aspx、*.asmx、*.ashx)。因此,如果您试图捕获对诸如“/my/fine/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. 点击确定!

    所以!您的所有请求现在都应该被定向到 ASP.NET 处理程序,因此无论扩展名如何,都会被您的 URL 重写器捕获。

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

    /丹尼斯 :-)

    【讨论】:

    • 但我会对这如何影响性能和其他事情感兴趣......这是正确的方法吗?谢谢
    • 这是在 IIS6 上运行 ASP.NET MVC 的方式,但即使是静态内容的所有请求都通过 ASP.NET 管道,性能会受到影响。您可以使用 mscd.codeplex.com 来避免这种情况。
    • 是的,静态请求的吞吐量将减少约 30%。避免这种情况的最好方法是对您的站点进行分区:创建两个网站,一个带有您的通配符映射而没有任何静态资源,另一个带有您的静态资源而没有通配符映射。此外,无论是否使用通配符映射,它都是一个很好的做法;)
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-02-07
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多