Сопоставление подстановочных знаков IIS не работает для ASP.NET

Я установил сопоставление с подстановочными знаками в IIS 6, добавив «C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll» и убедился, что «Проверить, существует ли файл» не проверено:

  • в каталоге "сайты" в IIS
  • на вебсайте

Однако после iisreset, когда я перехожу на http://myserver/something.gif, я все равно получаю IIS Ошибка 404, а не ошибка asp.net.

Я что-то пропустил?

Точность:

  • это не для использования ASP.NET MVC
  • Я бы предпочел не использовать настраиваемые страницы ошибок iis 404, так как у меня есть httpmodule для регистрации ошибок (это внутренний сайт с низким трафиком, поэтому снижение производительности сопоставления с подстановочными знаками не является проблемой;))

person mathieu    schedule 19.09.2008    source источник
comment
Вы используете маршрутизацию ASP.net?   -  person Eduardo Molteni    schedule 19.09.2008
comment
нет, это только для обработки 404, но без настраиваемых страниц ошибок в IIS   -  person mathieu    schedule 19.09.2008


Ответы (3)


Вам необходимо добавить обработчик HTTP в вашу веб-конфигурацию для файлов gif:

  <system.web>
    <httpHandlers>
      <add path="*.gif" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="true"/>
    </httpHandlers>
  </system.web>

Это заставляет .Net обрабатывать файл, тогда вы получите ошибку .Net.

Ошибка сервера в приложении '/'

Ресурс не может быть найден. Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), мог быть удален, изменилось его имя или временно недоступен. Просмотрите следующий URL-адрес и убедитесь, что он написан правильно.

Запрошенный URL: /test.gif


Информация о версии: Microsoft .NET Framework Версия: 2.0.50727.1433; Версия ASP.NET: 2.0.50727.1433

person Christopher G. Lewis    schedule 19.09.2008

Для этого вы можете попробовать использовать настраиваемые ошибки. Зайдите в Custom Errors в свойствах вашего веб-сайта и установите 404 так, чтобы он указывал на URL-адрес вашего сайта. Вроде /404.aspx есть то, что есть.

С aspnet_isapi вы хотите использовать HttpModule для обработки ваших подстановочных знаков. например http://urlrewriter.net/

person WebDude    schedule 19.09.2008

Вы не можете использовать отображение Wilcard без использования маршрутизации ASP.net, URLrewriting или какого-либо механизма сопоставления URL-адресов.

Если вы хотите выполнить 404, вам нужно настроить его в web.config -> Пользовательские ошибки.
Затем вы можете перенаправить на другие страницы, если хотите.

Новое в 3.5 SP1, вы устанавливаете RedirectMode на «responseRewrite», чтобы избежать перенаправления на настраиваемую страницу ошибки и оставить URL-адрес в браузере нетронутым.

Другой способ сделать это - поймать ошибку в global.aspx и перенаправить. Прокомментируйте ответ, если вам нужны дальнейшие инструкции.

person Eduardo Molteni    schedule 19.09.2008