我计划对 Web 表单应用程序使用 url 路由。但是,读了一些之后 帖子, ,我不确定这是否是一个简单的方法。

是不是更好地使用 URL重写模块 对于网络表单?但是,它仅适用于 IIS7。最初,有人认为 URL 路由与 Asp.Net MVC 完全解耦,并且可以用于 Web 表单。

很想听听任何建议..

有帮助吗?

解决方案

有一个 这里很棒的帖子 IIS 团队成员介绍了两者之间的差异。

我建议的一个警告是,对于 WebForms,使用路由时需要小心。我已经编写了一个示例实现来说明您如何使用 使用 WebForms 进行路由 这解决了这些问题,并希望有助于回答您的问题。

其他提示

这是我发现的关于这个主题的最好的文章: IIS URL 重写和 ASP.NET 路由 鲁斯兰·雅库舍夫。

IIS URL 重写

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

IIS URL Rewriting

ASP.NET 路由

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

IIS URL Routing

URL重写和ASP.NET路由之间的区别:

  1. URL重写用于操作URL路径 在 Web 服务器处理请求之前. 。URL 重写模块不知道哪个处理程序最终将处理重写的 URL。此外,实际的请求处理程序可能不知道 URL 已被重写。
  2. ASP.NET 路由用于 根据请求的 URL 路径将请求分派给处理程序. 。与 URL 重写相反,路由组件了解处理程序并选择应该为所请求的 URL 生成响应的处理程序。您可以将 ASP.NET 路由视为一种高级处理程序映射机制。

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

  1. IIS URL 重写模块可与任何类型的 Web 应用程序一起使用,其中包括 ASP.NET、PHP、ASP 和静态文件。ASP.NET 路由只能与基于 .NET Framework 的 Web 应用程序一起使用。
  2. 无论应用程序池使用集成还是经典 IIS 管道模式,IIS URL 重写模块的工作方式都是相同的。对于 ASP.NET 路由,最好使用集成管道模式。ASP.NET 路由可以在经典模式下工作,但在这种情况下,应用程序 URL 必须包含文件扩展名,或者必须将应用程序配置为使用 IIS 中的“*”处理程序映射。
  3. URL重写模块可以根据域名、HTTP标头和服务器变量做出重写决策。默认情况下,ASP.NET 路由仅适用于 URL 路径和 HTTP-Method 标头。
  4. 除了重写之外,URL 重写模块还可以执行 HTTP 重定向、发出自定义状态代码和中止请求。ASP.NET 路由不执行这些任务。
  5. URL 重写模块在当前版本中不可扩展。ASP.NET 路由是完全可扩展和可定制的。

你想让格式化的 url 成为生成页面的工厂吗?

或者你想让 .aspx 消失吗?

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

路由,用于查看请求并确定哪个对象应该处理它。它们听起来很相似,phil haack 有一些关于这个主题的好文章。

在iis6中,isapiRewrite,非常好

我最近刚刚编写了自己的重写系统,以使我网站上的 URL 看起来更好。基本上,您需要编写自己的 IHttp模块 并将其添加到您的 web.config 以拦截传入请求。然后,您可以使用 HttpContext.Current.RewritePath 更改您指向的内容。

您还需要将您的网站配置为 一切都使用 aspnet_isapi.

在此过程中您会发现很多小问题,例如尝试使用在其上使用“尾部”的页面(例如 PageMethods),或者页面元素的路径和表单回发,但您会解决它们。

如果有兴趣,我可以发布代码链接,您可以查看。我已经解决了很多问题,所以你可以边读边读。我确信还有很多其他人也这样做过,这也可能是很好的资源。

你可能想看看我的 回答 对于这个问题: ASP.NET - 构建您自己的路由系统. 。我提供了一些很好的参考资料,可帮助您使用 url 重写方法或来自 ASP.NET MVC 项目的新路由引擎构建自己的路由系统。

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

对于 IIS 上的 URL 重写, 国际研究基金会 适用于 IIS5、6、7。自由的。简单的。快速地。开源。正则表达式支持。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top