代码之家  ›  专栏  ›  技术社区  ›  adinas

利用托管公司“404错误行为”实现URL路由

  •  0
  • adinas  · 技术社区  · 15 年前

    许多托管公司允许您定义如果用户转到不存在的页面,将向用户显示哪个页面。如果您定义了一些.aspx页面,那么它将执行并显示出来。

    我的问题是,为什么不把它用于路由选择呢?因为我可以解析用户的URL,然后做一个server.transfer到我想要的页面。我检查过,没有重定向发送到客户端,HTTP头是http/1.1200 OK。

    所以,对于没有ASP.NET 3.5 SP1的服务器或不使用MVC的服务器,这是一个好主意吗?

    谢谢

    1 回复  |  直到 15 年前
        1
  •  1
  •   Stephen M. Redd    15 年前

    您“可以”这样做,但是为什么不创建一个httpmodule并在那里处理路由呢?这就是大多数URL重写系统的工作原理(事实上,这也是MVC路由的工作原理,因为global.asax只是一个预构建的httpmodule,有一些额外的功能)。

    依赖于您描述的那种服务器处理的一个重要问题是,您真的无法控制它,而且它是一种黑客机制…我的意思是,你正在接受一个网络服务器的功能,它有一个特定的目的和设计,并在它上面放置一个不同的意义和功能…这意味着您现在没有实际404错误的内置处理。另外,你正在考虑的机制要比仅仅使用其他你可以选择的方法更难适应你的目的。

    除非需要路由方面的特殊功能,否则应考虑使用现有的路由组件,例如mod rewrite或其他十几个常见的URL重写器中的一个,这些重写器是在MVC路由引擎实现之前构建的,并且在旧版本的ASP.NET中工作正常。还有许多关于使用httpmodules、httphandlers和各种其他技术在ASP.NET WebForm环境中进行路由的教程。