ASP.NET-构建自己的路由系统
在最近的项目中,我用PHP构建了自己的MVC框架。我实现的一件事是路由系统。我使用Apache的mod_rewrite将所有请求发送到index.php,然后解析URI以提取信息并路由请求。
我现在正在涉足ASP.NET,并且想知道是否/如何执行类似的操作。有没有一种方法可以将所有请求(类似于WordPress的方法)路由到执行集中路由处理的一页?我知道用于ASP.NET的MVC框架,但是我想自己动手并学习时,对此自己有所了解。
编辑:
顺便说一句,我的托管服务提供商运行IIS 6
解决方案
回答
这将是一个很长的答案,因为我想确保我们完全了解可以完成自己想做的所有方式。
支持ASP.NET MVC框架的路由引擎将与传统的ASP.NET框架一起使用。我们可以像使用ASP.NET MVC应用程序一样利用RouteTable和分配路由。我们只是在传统的ASP.NET网站中没有获得MVC部分。这对ASP.NET框架是一个巨大的增强,很高兴看到他们重用该代码并使它们在两个框架中都能工作。如果我们想了解更多有关此内容,请查看ScottGu的文章并向下滚动到" URL路由改进"。这也是Phil Haack在WebForms中如何使用System.Web.Routing的参考。
现在,如果我们仍然想写自己的东西。我们将需要学习ASP.NET HTTP管道以及如何实现IHttpModule和IHttpHandler接口来创建自己的HttpModule或者HttpHandler类来处理路由。这些接口是编写自己的路由引擎的关键。为了帮助将这些接口放在一个可行的示例中,我不能推荐此MSDN文章。它显示了如何使用任一接口,并说明了创建自己的路由/ URL重写引擎时的区别。
现在,如果我们发现这可能对我们来说很重要。有一些第三方库可供我们使用,他们已经在.NET中编写了路由/ URL重写引擎。这是我不久前才看到的一个问题,问"我们为ASP.Net使用哪个Url重写器?"就在这里。