ASP.NET如何直接访问路由应用程序中的基础Web窗体?

时间:2010-10-05 23:31:32

标签: asp.net webforms-routing

想象一下带有路由的Web窗体应用程序。 一个干净的页面名称,如:

http://www.mywebsite.com/home

可能有以下网址:

http://www.mywebsite.com/page.aspx?id=3

如果用户将http://www.mywebsiter.com/page.aspx?id=3输入浏览器,我需要重定向到http://www.mywebsite.com/home

这可能吗? 我无法找到一种方法来实现这一点,因为没有为物理页面和page.aspx执行路由引擎.Page_Load方法我无法知道URL是直接输入还是路由的结果。

2 个答案:

答案 0 :(得分:1)

您可以使用Page.RouteData.Values集合来检测是否由于路由而加载了页面,而不是直接URL。这可以在Page_Load()中完成。

如果有路线数据值(您可能会检查您认为应该存在的值),那么它们就可以了。如果没有路径数据值,页面已“直接”加载,您应该重定向它们。

答案 1 :(得分:0)

查看IIS URL rewrite module

您还可以查看禁用文件路由(RouteTable.Routes.RouteExistingFiles = false;)之类的内容 - 虽然这可能很危险!