URL / lpt1 и / com1 заставляют IIS отображать свой экран смерти - PullRequest
2 голосов
/ 23 июня 2011

При запуске недавнего сканирования SkipFish - мы обнаружили, что IIS (7.5) возвращает следующее, если вы звоните /lptX или /comX (где X - число 1-9).

Server Error in '/' Application.

The resource cannot be found.

Description: HTTP 404. The resource you ...[and so on]...

Это несмотря на тот факт, что у нас есть пользовательские [красивые] ошибки на уровне сайта и на уровне конфигурации веб-сервера.

Попробуйте это на своем компьютере IIS, если у вас есть - http://localhost/lpt1Я должен это сделать.

Я предполагаю, что это наследие «добрых старых дней» принтеров и мышей LPT, подключающихся через COM-порты.Но немного тревожно видеть и область IIS, которую я не могу настроить.

Можно ли заставить IIS обслуживать пользовательскую страницу 404 даже для этих «специальных» URL-адресов?

Ответы [ 2 ]

6 голосов
/ 24 июня 2011

До ASP.NET 4.0 не было возможности использовать определенные зарезервированные имена файлов, такие как con, lpt, aux и т. Д. В ваших URL:

Операционные системы Zombie и ASP.NET MVC

Это было ограничение ASP.NET, а не MVC.

Однако, хорошая новость в том, что теперь это возможно:

Установка Con (COM1, LPT1, NUL и т. Д.) В ваших URL

Если вы не используете ASP.NET 4.0, вы сможете ловить эти 404, используя собственные настройки конфигурации <httpErrors> в IIS7.

0 голосов
/ 15 июня 2016

В ASP .NET 3.5 вы можете использовать правило перезаписи URL модуля перезаписи URL, чтобы изменить URL-адрес на действительный.

Модуль перезаписи URL :

Модуль перезаписи URL-адресов Microsoft 2.0 для IIS 7 и более поздних версий позволяет администраторам IIS создавать мощные настраиваемые правила для сопоставления URL-адресов запросов.на дружественные URL-адреса, которые пользователям легче запомнить, а поисковым системам - просто найти

Что-то вроде:

<rewrite>
  <rules>
    <rule name="CON rewrite" stopProcessing="true">
      <match url="(.*)/(con\.)(.*)" />
      <action type="Redirect" url="{R:1}/con-{R:3}" redirectType="SeeOther" />
    </rule>     
  </rules>
</rewrite>
...