【问题标题】:Prevent access to aspx files and allow access only via routing?阻止访问 aspx 文件并仅允许通过路由访问?
【发布时间】:2013-08-14 16:33:19
【问题描述】:

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

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

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

问题:

  • 我可以配置路由以便只接受路由路径吗?

【问题讨论】:

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


【解决方案1】:

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>

【讨论】:

    【解决方案2】:

    找到了。

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

    Page.RouteData.RouteHandler 为空

    在哪里

    如果我使用路由 url 它不为空:

    {System.Web.Routing.PageRouteHandler}

    编辑

    (更好的解决方案)

    将这两行添加到全局 asax

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

    【讨论】:

    • 所以每次它都会检查这个条件?
    • 基本页面可以轻松完成。 (除非您有其他解决方案)。
    猜你喜欢
    • 1970-01-01
    • 2011-02-10
    • 2022-11-28
    • 2011-09-26
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    相关资源
    最近更新 更多