13

ASP.NET MVCでルーティングを操作する方法を学び、IgnoreRouteメソッドを理解しようとしています。

ユーザーがにアクセスできないようにしようとしています"Content/{filename}.html"。これをRegisterRoutesメソッドの最初の呼び出しとして配置しました。これが私のコードです:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("Content/{filename}.html");
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


    routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}",
                    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                    new { controller = "^.*", action = "^Index$|^About$" },
                    new[] { "UrlsAndRoutes.AditionalControllers" });
    routes.MapRoute("MyRoute2", "{controller}/{action}/{id}/{*catchall}",
                   new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                    new { controller = "^.*", action = "^Index$|^About$" },
                   new[] { "UrlsAndRoutes.Controllers" });
    routes.MapRoute("ShopSchema2", "Shop/OldAction", new { controller = "Home", action = "Index" });
    routes.MapRoute("ShopSchema", "Shop/{action}", new { controller = "Home" });
    routes.MapRoute("", "X{controller}/{action}");

    routes.MapRoute(
       name: "",
       url: "{controller}/{action}",
       defaults: new { controller = "Home", action = "Index" }
   );
}

localhost:53907 / Content / Static.htmlのようなリンクにアクセスしようとすると、これまで理解していたファイルを表示できなくなりますが、表示されます。

私は何が間違っているのですか?

4

2 に答える 2

17

MVCでルートを無視すると、MVCフレームワークにそれらのURLを取得しないように指示されます。

これは、基盤となるASP.NETが要求を処理できるようにすることを意味します。これにより、静的ファイルが表示されます。

于 2013-03-13T09:20:06.197 に答える
1

そのフォルダへのアクセスを本当にブロックしたい場合は、web.configで定義してみませんか?

そのフォルダーにweb.configを配置します。

内容は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <authorization>
          <!-- <allow roles="admin" /> --> //In case you want to give access to admin only.
          <deny users ="*" />
        </authorization>
    </system.web>
</configuration>
于 2013-03-13T09:22:23.770 に答える