Я пытаюсь обрабатывать как ".aspx", так и запросы страниц без расширений (т.е. как contact.aspx и / contact /), используя собственный HttpHandler в IIS7. Мой обработчик прекрасно работает как в одном, так и в другом случае, но как только я пытаюсь обработать оба случая, он работает только для одного. Пожалуйста, посмотрите фрагмент обработчиков из моего web.config ниже:
Если я продолжаю отображать только «* .aspx», то все запросы .aspx обрабатываются корректно, но, очевидно, запросы без расширения не будут работать:
<add name="AllPages.ASPX" path="*.aspx" verb="*" type="Test.PageHandlerFactory, Test" preCondition="" />
Если я изменил сопоставление на «*», тогда все запросы без расширения обрабатываются корректно, но запросы «.aspx», которые все еще должны обрабатываться этим обработчиком, перестают работать. Обратите внимание, что я добавил запись StaticFiles для обработки файлов на диске, таких как images, css, js и т. Д.
<add name="WebResource" path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" />
<add name="StaticFiles" verb="GET,HEAD" path="*.*" type="System.Web.StaticFileHandler" resourceType="File" />
<add name="AllPages" path="*" verb="*" type="Test.PageHandlerFactory, Test" preCondition="" />
Сумасшедшая вещь в том, что когда я загружаю запрос ".aspx" (с показанной 2-й конфигурацией), IIS7 выдает ошибку 404 not found. Ошибка также говорит о том, что запрос обрабатывается обработчиком StaticFiles. Но я обязательно добавил resourceType = "File" в StaticFileHandler, чтобы избежать этого. По словам MS, это означает, что запрос только для «физических файлов на диске». Я неправильно читаю / интерпретирую часть "на диске"?
Мой файл .aspx отсутствует на диске, поэтому я в первую очередь хочу использовать обработчик.