代码之家  ›  专栏  ›  技术社区  ›  Gulzar Nazim

IIS URL重写与URL路由

  •  48
  • Gulzar Nazim  · 技术社区  · 17 年前

    posts ,我不知道这是否一个简单的方法。

    是不是最好使用 URL Rewrite module 对于web表单?但是,这只适用于IIS7。最初,有人认为URL路由与Asp.NETMVC完全解耦,可以用于web表单。

    我很想听听你的建议。。

    7 回复  |  直到 17 年前
        1
  •  41
  •   quw    11 年前

    IIS URL Rewriting and ASP.NET routing 罗斯兰·亚库舍夫。

    IIS URL重写

    当客户端向Web服务器请求特定URL时,URL重写组件将分析请求的URL并将其更改为同一服务器上的其他不同URL。URL重写组件在请求处理管道的早期运行,因此能够在Web服务器决定使用哪个处理程序处理请求之前修改请求的URL。

    IIS URL Rewriting

    ASP.NET路由作为托管代码模块实现,该模块在解析缓存阶段(PostResolveRequestCache事件)和映射处理程序阶段(PostMapRequestHandler)插入IIS请求处理管道。ASP.NET路由配置为针对向Web应用程序发出的所有请求运行。

    IIS URL Routing

    1. URL重写用于操作URL路径 . URL重写模块不知道什么处理程序将最终处理重写的URL。此外,实际的请求处理程序可能不知道URL已被重写。
    2. ASP.NET路由用于 . 与URL重写相反,路由组件了解处理程序并选择应该为请求的URL生成响应的处理程序。您可以将ASP.NET路由视为一种高级处理程序映射机制。

    除了这些概念上的差异外,IIS URL重写和ASP.NET路由之间还有一些功能上的差异:

    1. 无论应用程序池使用集成或经典IIS管道模式,IIS URL重写模块的工作方式都是相同的。对于ASP.NET路由,最好使用集成管道模式。ASP.NET路由可以在经典模式下工作,但在这种情况下,应用程序URL必须包含文件扩展名,或者应用程序必须配置为在IIS中使用“*”处理程序映射。
    2. URL重写模块可以根据域名、HTTP头和服务器变量做出重写决策。默认情况下,ASP.NET路由仅适用于URL路径和HTTP方法头。
    3. 除了重写,URL重写模块还可以执行HTTP重定向、发出自定义状态代码和中止请求。ASP.NET路由不执行这些任务。
        2
  •  26
  •   Haacked    17 年前

    great post here IIS团队的一名成员介绍了两者之间的差异。

    我建议的一个警告是,对于WebForms,在使用路由时需要小心。我已经编写了一个示例实现,介绍了如何使用 routing with WebForms

        3
  •  7
  •   DevelopingChris    17 年前

    是否希望格式化URL成为生成页面的工厂?

    还是要让.aspx消失?

    重写,是为了使.aspx消失,或者只是为了整理url。

    路由,用于查看请求并确定哪个对象应该处理它。他们听起来很相似,菲尔·哈克有几篇关于这个主题的好文章。

    在iis6中,isapiRewrite非常好

        4
  •  4
  •   hugoware    17 年前

    IHttpModule 并将其添加到web.config以拦截传入的请求。然后,您可以使用HttpContext.Current.RewritePath来更改所指向的内容。

    您还需要将站点配置为 use the aspnet_isapi for everything .

    在此过程中,您会发现许多小问题,比如尝试处理使用“尾部”的页面(如PageMethods),或者页面元素的路径和表单回发,但您会解决这些问题。

        5
  •  2
  •   Community Mohan Dere    9 年前

    answer 关于这个问题: ASP.NET - Building your own routing system . 我提供了一些很好的参考资料,帮助您使用url重写方法或ASP.NET MVC项目中提供的新路由引擎构建自己的路由系统。

        6
  •  0
  •   Norge    17 年前

    NET3.5SP1提供的动态数据项目展示了url路由实现的一个很好的示例。

        7
  •  0
  •   Cheeso    17 年前

    IIRF 在IIS5,6,7中工作。自由的容易的快速的开源。正则表达式支持。