许多托管公司允许您定义如果用户转到不存在的页面,将向用户显示哪个页面。如果您定义了一些.aspx页面,那么它将执行并显示。
我的问题是,为什么不将它用于路由。因为我可以解析用户URL,然后执行server.transfer到我想要的页面。我检查过,没有重定向发送到客户端,http标头是HTTP / 1.1 200 OK。
那么,对于没有ASP.NET 3.5 SP1的服务器或者您没有使用MVC,这是一个好主意吗?
由于
答案 0 :(得分:1)
你“可以”这样做,但为什么不只是创建一个HttpModule并处理那里的路由?这就是大多数URL重写系统的工作方式(实际上,它也是MVC路由的工作原理,因为global.asax只是一个预构建的HttpModule,只有一些附加功能)。
依靠你所描述的那种服务器处理的一件大事就是你真的无法控制它,而且它是一种hackish机制......我的意思是你正在使用Web服务器的功能具有特定的目的和设计,并在其上面放置不同的含义和功能......这意味着您现在没有内置处理实际的404错误。此外,您正在考虑的机制比仅使用您可用的其他选项更难以适应您的目的。
除非您需要路由中的特殊内容,否则您应该考虑使用现有的路由组件,例如Mod-Rewrite,或者在MVC路由引擎实现之前构建的十几个其他流行的URL重写器中的一个,并且在较旧版本中正常工作asp.net的版本。还有许多关于使用HttpModules,HttpHandlers和各种其他技术在asp.net webform环境中进行路由的教程。