Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Маршрутизация ASP.NET MVC и зарезервированные имена файлов в Windows

Автор вопроса: Benjamin PollackОтветов: 4

В нашем приложении ASP.NET MVC мы заметили, что у нас не может быть Запрещенных имен файлов DOS сCOM1 по COM9, с LPT1 по LPT9, CON, AUX, PRN и NUL где-либо на наших маршрутах. Они неизбежно приводят к тому, что IIS сообщает нам, что файл не может быть найден, даже если мы настроили маршрутизацию, чтобы сначала не проверять наличие файлов. Как мы можем это обойти?

  • Для удовольствия нажмите stackoverflow.com/com1 и сравните с http://stackoverflow.com/ThisDoesNotExist kamens 12.06.2009
  • интересно, stackoverflow.com/clock$ работает нормально, хотя CLOCK $ также является зарезервированным именем файла устройства. Jacob Krall 12.06.2009
  • Используя эти знания, я успешно сделал невозможным переход на свою пользовательскую страницу. Woot. Benjamin Pollack 12.06.2009
  • Мне нравится, как вы себя поставили. Michael Pryor 13.06.2009
  • Очень круто; но не невозможно - имя пользователя не требуется в маршруте информации о пользователе;) Tom Ritter 13.06.2009
  • microsoft.com/com1.aspx)) Sergey Mirvoda 30.04.2010

windowsiis

Ответы

Ответ 1 · рейтинг 38 · Haacked

Это было решено в ASP.NET 4. http://haacked.com/archive/2010/04/29/allowing-reserved-filenames-in-URLs.aspx

Вы можете применить параметр в web.config, который снимает это ограничение.

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

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

Надеюсь, это поможет.

Ответ 2 · рейтинг 18 · Benjamin Pollack

Задав вопрос, я обнаружил, что ошибка связана с собственно ASP.NET, а не с IIS или ASP.NET MVC, а это означает, что ее невозможно обойти. Единственное решение - вручную запретить URL-адреса, соответствующие этим именам и этим именам, за которыми следует точка и случайные символы.

Ответ 3 · рейтинг 4 · CoderDennis

По той же причине в StackOverflow не может быть тега web.config.

http://stackoverflow.uservoice.com/pages/1722-general/suggestions/98871-web-config-tag-404-error

Ответ 4 · Jokin

по другой аналогичной причине у вас не может быть URL-адресов с точкой и косой чертой Семантические URL-адреса с точками в .net

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы