Подстановочный знак HttpHandler не обрабатывает статические файлы

Я просмотрел некоторые из старых вопросов, но ничего не могу найти.

У меня есть Wildcard HttpHandler в моем веб-приложении, которое обрабатывает URL-адрес и выясняет, может ли он что-то с ним сделать.

Если это невозможно, то обработчик StaticFile должен подобрать его и просто использовать как статический файл (например, файл html).

Проблема в том, что он проходит через обработчик подстановочных знаков, а затем, по-видимому, не попадает в StaticFileHander. Есть ли что-то, что мне нужно сделать с обработчиком подстановочных знаков или в веб-конфигурации?

Это мой web.config:

<add name="Wildcard" path="*" verb="*" type="Rewriter.RewriterHttpModule"
 modules="IsapiModule"  requireAccess="None" allowPathInfo="false" 
 preCondition="" responseBufferLimit="4194304" />

<add name="StaticFile" path="*.*" verb="*" 
 modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" 
 scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" 
 resourceType="File" requireAccess="Read" allowPathInfo="false" preCondition="" 
 responseBufferLimit="4194304" />

person Paul    schedule 26.01.2010    source источник
comment
Расскажите нам о вашей настройке IIS. Ваш web.config не будет иметь никакого значения, если IIS не передает запрос в ASP.NET.   -  person Bryan    schedule 27.01.2010
comment
Я особо ничего не менял в IIS7, это просто стандартная установка. Однако он работает в пуле приложений по умолчанию.   -  person Paul    schedule 27.01.2010


Ответы (3)


Возможно, ваш HttpHandler должен явно передать запрос StaticFileHandler.

person hunter    schedule 27.01.2010
comment
Да, я так и думал, но как это сделать? StaticFileHandler — это внутренний класс, поэтому я не могу использовать его в конце обработчика, и вы не можете добавить его в web.config, поскольку, если он подхватывается ReWriteHandler, он не переходит к следующий... - person Paul; 27.01.2010
comment
Попробуйте дать статическому обработчику путь и просто Redirect() к нему из RewriteHandler - person hunter; 27.01.2010

В продолжение того, что сказал Хантер, да, возможно, добавьте эту запись в свой Web.Config после первого сопоставления подстановочных знаков:

<add verb="*" path="*" type="System.Web.StaticFileHandler" />

Просто мысль. Не проверял это или что-то еще.

person alex    schedule 27.01.2010

Проверьте режим конвейера пула приложений. Если это Classic, вам нужно настроить свои обработчики в разделе <httpHandlers>. Если он интегрирован, вы должны использовать раздел <handlers> в web.config.

person Branislav Abadjimarinov    schedule 28.01.2010