Могу ли я остановить ASP.NET от возврата «Ресурс не найден.»? - PullRequest
2 голосов
/ 25 марта 2010

Я установил HttpModule в свое веб-приложение, которое будет обрабатывать все запросы с заданным расширением файла.

Я хочу, чтобы ASP.NET обрабатывал все запросы с расширением, независимо от того, имеется ли основной файл на диске. Поэтому, когда я добавил расширение в «Сопоставления расширений приложения», я снял флажок «Проверить, что файл существует».

Однако это просто передает проверку файла в ASP.NET, а не IIS, поэтому я просто получаю другую страницу с ошибкой при запросе URL с расширением файла.

Есть ли способ предотвратить эту проверку файла ASP.NET и перехватить запросы?

Ответы [ 2 ]

1 голос
/ 27 марта 2010

Вам нужно создать HttpHandler вместо HttpModule. Добавьте расширение HttpHanlder в веб-конфигурацию, и тогда все запросы к этому расширению на сервер будут направлены вашему обработчику.

<httpHandlers>
    <add verb="*" path="*.ext" type="Domain.Model.MyHttpHandler" />
</httpHandlers>

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

Вот хорошее краткое руководство пользователя

1 голос
/ 25 марта 2010

В Global.asax вы можете обработать событие BeginRequest.

protected void Application_BeginRequest(object sender, EventArgs e)
{

}

Скорее всего, вы захотите изменить объект Reponse, чтобы обеспечить возможность предоставления пользовательской страницы или перенаправления соответственно.

Если у вас нет Global.asax в вашем проекте, просто перейдите в Add New Item> Global Application Class

...