Использование RouteExistingFiles для блокировки доступа к существующим файлам, даже если маршрут не существует - PullRequest
5 голосов
/ 28 марта 2010

В ASP.net MVC 2 я могу использовать routes.RouteExistingFiles = true; для отправки всех запросов через систему маршрутизации, даже если они существуют в файловой системе.

Обычно это заканчивается тем, что происходит выбор маршрута "{controller}/{action}/{id}", и возникает исключение, так как контроллер не может быть найден.

Я не хочу использовать этот маршрут, хотя (у меня есть только несколько URL, и они специально сопоставлены), но я все же хотел бы запретить доступ к файловой системе.

В основном я хочу добавить в белый список страницы с помощью IgnoreRoute. Есть ли встроенный способ сделать это?

Мой нынешний подход заключается в том, чтобы по-прежнему иметь маршрут "{*anything}" и генерировать 404, когда это происходит, но мне просто интересно, если что-то уже встроено?

1 Ответ

7 голосов
/ 28 марта 2010

Это одно из немногих допустимых применений авторизации Web.config в приложении ASP.NET MVC. :)

Я бы рекомендовал установить для RouteExistingFiles значение false (чтобы маршрутизация и конвейер MVC не обрабатывали эти запросы, в отличие от ядра IIS и ASP.NET). Поместите все файлы, доступ к которым вы хотите запретить, в одну папку, затем поместите файл Web.config в эту папку:

<configuration>
  <system.web>
    <authorization>
      <deny users="*"/>
    </authorization>
  </system.web>
</configuration>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...