代码之家  ›  专栏  ›  技术社区  ›  Nick Spiers

ASP.NET友好URL

  •  3
  • Nick Spiers  · 技术社区  · 15 年前

    在我的研究中,我发现了两种方法。

    1. 使用通配符应用程序扩展映射通过.NET引擎运行所有内容。

    2. 创建一个自定义aspx错误页面,并告诉IIS向其发送404。

    现在我的问题是:

    有什么理由其中一个比另一个更好吗?

    在我的开发服务器上玩的时候,我注意到的第一件事是它的frontpage扩展糟糕透顶,这不是什么大问题,但我习惯于连接到我的网站。我在第1条中的另一个问题是,即使我的托管公司对我宽大(因为我是他们的最大客户),并且会考虑这样做,他们也会警惕它可能存在的任何安全风险。

    `#2很好用,但我觉得它不如1有效。我只是在妄想吗?

    4 回复  |  直到 15 年前
        1
  •  3
  •   Wim    15 年前

    我过去也用过#2。

    或者,如果您不介意URL中的.aspx扩展名,您可以使用: http://myweb/app/idx.aspx/products/1 -那很好。

    话虽如此,真正的解决方案是使用IIS 7,其中ASP.NET运行时是IIS HTTP模块堆栈的成熟部分。

        2
  •  2
  •   user110714 user110714    15 年前

    如果您拥有最新版本的IIS,则会为其提供重写模块-请参阅 here . 如果没有免费的第三方二进制文件,您可以使用旧版IIS(即版本6)-我使用了一个从.ini文件读取重写规则并支持正则表达式的二进制文件,但我记不起它的名称抱歉(可能是 this ).我建议用404页来降低成本。

        3
  •  1
  •   Chris Love    15 年前

    您必须通过ASP.NET引擎映射所有请求。IIS处理请求的方式由文件扩展名决定。默认情况下,它只处理.aspx、.ashx等扩展名,这些扩展名只能由ASP.NET处理。原因是它增加了请求处理的开销。 不久前我写过如何使用IIS 6, http://professionalaspnet.com/archive/2007/07/27/Configure-IIS-for-Wildcard-Extensions-in-ASP.NET.aspx

    从数据库进行映射是正确的。正则表达式重写,如MVC中的开箱即用。这是因为它或多或少地迫使您将主键放在URL中,并且没有一种很好的方法来映射URL中不允许的字符,例如'。

        4
  •  1
  •   Freddy    15 年前

    你查过ASP.Net了吗 MVC Framework ? 使用该框架,所有URL都会自动映射到可以执行任何所需操作(包括重定向到其他URL或控制器)的控制器。还可以使用自定义参数设置自定义管线。如果你还没看过,也许值得一看。