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

ASP.NET MVC4... является "BIN" зарезервированным ключевым словом?

У меня есть приложение с запасом, которое возвращает данные на основе символа запаса.

В принципе, вызов AJAX переходит в ~/Stocks/GetStockData/{id}, где символ {id} является символом запаса.

Это отлично работает... вообще. Сегодня я обнаружил, что запасы "Progressive Waste Solutions Ltd.", которые имеют символ BIN, взорвались. Если посмотреть на данные возврата в браузере, я вижу, что он возвращает 404 для этого символа.

Мне пришло в голову, что BIN может быть зарезервированным словом, запрашивающим какой-то двоичный файл или что-то в этом роде. Это так? Как мне обойти это без особых усилий? Существуют ли другие ключевые слова, которые также могут вызвать эту проблему?

UPDATE

Per Artyom Neustroev, это может быть зарезервированное ключевое слово и будет защищено от маршрутизации. Он ссылался на статью, в которой упоминался веб-сайт, в котором говорилось об этом, чтобы добавить следующий конфигурационный параметр в файл конфигурации:

<configuration>
  <system.web>
    <httpRuntime relaxedUrlToFileSystemMapping="true"/>

    <!-- ... your other settings ... -->
  </system.web>
</configuration>

... который заставил меня дальше. При запуске моего сайта с этим вызовом ajax была возвращена ошибка 404.8:

HTTP Error 404.8 - Not Found
The request filtering module is configured to deny a path in the URL that contains a hiddenSegment section.

Хорошо, это действительно сортировка имеет смысл. Маршрутизация была настроена так, чтобы кто-то не попал в мой каталог bin, и я одобряю такую ​​профилактику.

Итак, мне интересно, как указать определенную группу методов, чтобы получить такие вещи, как bin или CONFIG (теоретически), нормально, если для этого существует определенный маршрут?

4b9b3361

Ответ 1

Итак, вот краткий обзор:

Механизм маршрутизации учитывает скрытые каталоги и файлы (например, web.config,/bin и т.д.) и скрывает их от людей. Для некоторых из них правила могут быть немного ослаблены, поскольку они обрабатываются в коде. Этими ключевыми словами являются: CON, COM1, COM2, COM3, COM4, LPT1, LPT2, AUX, PRN и NUL. На них можно фактически ссылаться на изменение файла вашего web.config следующим образом:

<configuration>
  <system.web>
    <httpRuntime relaxedUrlToFileSystemMapping="true"/>

    <!-- ... your other settings ... -->
  </system.web>
</configuration>

Однако другой тип скрытых ключевых слов не управляется кодом, а скорее в IIS. У вас есть два варианта. Вы можете изменить настройки IIS, предложенные Артемом Неустроевым (он ссылается на этот), который кажется мне немного опасным, но я ожидаю, что это будет работа.

Другой вариант, с которым я пошел, состоял в том, чтобы изменить мой вызов AJAX на метод POST. Тогда значение не указано в URL-адресе, и вся проблема обходится.

Спасибо всем, кто довел меня до этого момента.