ASP.NET - 构建您自己的路由系统

标签 asp.net routes url-rewriting

在最近的一个项目中,我用 PHP 构建了自己的 MVC 框架。我实现的其中一件事是路由系统。我使用 Apache 的 mod_rewrite 将所有请求发送到 index.php,然后解析 URI 以提取信息并路由请求。

我现在涉足 ASP.NET,我想知道我是否/如何执行类似的操作。有没有一种方法可以将所有请求(类似于 WordPress 的方式)路由到执行中央路由处理的一个页面?我知道 ASP.NET 的 MVC 框架,但我想在我不断修改和学习的过程中亲自尝试一下。

编辑: 顺便说一句,我的托管提供商运行 IIS 6

最佳答案

这将是一个很长的答案,因为我想确保您完全了解可以完成您想做的事情的所有方法。

支持 ASP.NET MVC 框架的路由引擎将与传统的 ASP.NET 框架一起工作。您可以利用 RouteTable 并分配路由,就像在 ASP.NET MVC 应用程序中一样。您只是无法在传统 ASP.NET 站点中获得 MVC 部分。这是对 ASP.NET Framework 的巨大增强,很高兴看到他们重用该代码并使其在两个框架中都能工作。如果您想了解更多信息,请查看 ScottGu 的 post并向下滚动到 URL 路由改进。这里还有一个reference关于如何在 WebForms 中使用 System.Web.Routing,作者:Phil Haack。

现在,如果您仍然想编写自己的。您将需要学习 ASP.NET HTTP 管道以及如何实现 IHttpModuleIHttpHandler接口(interface)来创建您自己的 HttpModule 或 HttpHandler 类来处理您的路由。这些接口(interface)是编写自己的路由引擎的关键。为了帮助将这些接口(interface)放入工作示例中,我无法推荐此 MSDN article足够的。它向您展示了如何使用任一界面,并解释了创建您自己的路由/URL 重写引擎时的差异。

现在,如果您发现这对您来说可能太过分了。您可以使用已经在 .NET 中编写路由/url 重写引擎的人的第三方库。这是我不久前在 SO 上看到的一个问题,问“What Url rewriter do you use for ASP.Net?”。

关于ASP.NET - 构建您自己的路由系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22869/

相关文章:

ASP.NET MVC : How do you get the current URL of the page in the view?

c# - LINQ to SQL 其中 ID 不在 some_list 中

algorithm - 如何通过虚线(车站)路径找到路径,例如地铁 map

ruby - rspec 索引示例有效但不显示示例

.htaccess - URL 重写在 Wamp 服务器上不起作用

wordpress - 在 wordpress 中更改自定义帖子类型 url/slug?

c# - IEnumerable 没有 Count 方法

c# - 隐藏页面 url asp.net

ruby-on-rails - 使用 Rails paths.rb 文件生成 API 引用文档的最佳方法是什么?

iis - 在 IIS7 中重写 URL