Подтвердить что ты не робот

Игнорирование маршрута в ASP.NET MVC

Я просто учился работать с маршрутизацией в 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, она не должна позволять мне отображать файл из того, что я понимаю до сих пор, но он отображает его.

Что я делаю неправильно?

4b9b3361

Ответ 1

Игнорирование маршрутов в MVC будет определять структуру MVC, чтобы не отображать эти URL.

Это означает, что это позволит базовому ASP.NET обрабатывать запрос, который с радостью покажет вам статический файл.

Ответ 2

Если вы действительно хотите заблокировать доступ к этой папке, почему бы не определить ее в 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>