Как я могу заставить www.mywebapp.com/bin вернуть 404 в ASP.NET MVC? - PullRequest
2 голосов
/ 06 января 2010

Я использую ASP.NET MVC для разработки веб-приложения и развертывания на IIS 7. Я спрятал свои каталоги Files and Views с файлами web.config в этих каталогах (они просто возвращают нормальный 404).

Однако мне не удалось заставить метод web.config скрывать каталог bin. Когда я захожу на www.mywebapp.com/bin, я получаю слишком откровенную страницу с таким сообщением:

Ошибка HTTP 404,8 - не найдена

The модуль фильтрации запросов настроен запретить путь в URL, который содержит раздел hiddenSegment.

На странице показана часть моей структуры каталогов. Я просто хочу, чтобы он вернул мою страницу 404, как это делают каталоги Files and Views. Как я могу получить это поведение?

Ответы [ 3 ]

1 голос
/ 24 марта 2010

Мне удалось решить эту проблему, добавив небольшой файл web.config в мою директорию ~ / Files, который отвергает все попытки исследования через Интернет. Файл web.config очень похож на то, что ASP.NET MVC по умолчанию помещает в каталог Views:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <httpHandlers>
      <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
    </handlers>
  </system.webServer>
</configuration>
1 голос
/ 06 января 2010

Лучше было бы обрабатывать ошибки 404 и 404,8 с одной и той же, более удобной для пользователя, страницей ошибок, которая не раскрывает точный код ошибки. Возможно, вы также захотите обработать 403 ошибки (и, возможно, некоторые другие, которые будут предлагаться другими пользователями SO) таким же образом.

Для этого вам нужно использовать элемент в web.config.

0 голосов
/ 07 января 2010

Я добавил свою обработку ошибок для поиска путей в моем global.asax. Затем я проверяю, что это за ошибка, в вашем случае 404, и если это 404, я перенаправляю их в /Home/Index.

Если это еще одна ошибка, я направляю ее в контроллер ошибок и обрабатываю ее там.

Надеюсь, это поможет вам. Если вы хотите код, дайте мне знать.

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