В нашем приложении ASP.NET MVC мы заметили, что у нас не может быть Запрещенных имен файлов DOS сCOM1 по COM9, с LPT1 по LPT9, CON, AUX, PRN и NUL где-либо на наших маршрутах. Они неизбежно приводят к тому, что IIS сообщает нам, что файл не может быть найден, даже если мы настроили маршрутизацию, чтобы сначала не проверять наличие файлов. Как мы можем это обойти?
Вопрос
Маршрутизация ASP.NET MVC и зарезервированные имена файлов в Windows
- Для удовольствия нажмите 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
Ответы
Ответ 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.
Похожие материалы
- Какую версию MSXML мне следует использовать?
- Как запланировать ежедневный запуск метода для службы Windows C #?
- GetShortPathName непредсказуемые результаты
- ASP.NET MVC RavenDB Сохранить пользователя
- Именованный канал не может быть активирован
- Настраиваемые атрибуты в c #, которые сравнивают 2 свойства даты в приложении mvc