是否阻止访问aspx文件并仅允许通过路由访问?

时间:2013-08-13 07:04:22

标签: asp.net routing asp.net-4.0

我有一个url路由,我在global.asax文件声明:

  routes.MapPageRoute("RouteAdmin", "Admin/{Url}", "~/pages/MyPage.aspx", false);

但如果用户尝试访问mysite.com/pages/MyPage.aspx,他仍然可以看到该页面

问题:

  • 我是否可以配置路由以便仅路由路径可以接受?

2 个答案:

答案 0 :(得分:0)

找到它。

如果我直接访问aspx文件,那么我可以查看这个道具:

Page.RouteData.RouteHandler为空

,其中

如果我使用路由网址它不是空的:

{System.Web.Routing.PageRouteHandler}

修改

(更好的解决方案)

将这两行添加到全局asax

 routes.MapPageRoute("Route", "{*.}", "~/pages/default.aspx", false );
 routes.RouteExistingFiles = true; 

答案 1 :(得分:0)

ASP.NET MVC视图中,无法使用未找到的处理程序直接访问它们:

<system.web>
  <httpHandlers>
    <remove verb="*" path="*.aspx" />
    <add path="*.aspx" verb="*" type="System.Web.HttpNotFoundHandler" />
  </httpHandlers>
</system.web>

<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <handlers>
    <add name="BlockViewHandler" path="*.aspx" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
  </handlers>
</system.webServer>