Как можно отключить проверку запроса для HttpHandlers?
Можно ли отключить проверку запроса для HttpHandlers?
Немного фона - у меня есть веб-приложение ASP.NET с использованием HttpHandler для получения ответа от WorldPay. Журналы IIS показывают, что обработчик правильно вызывается из WorldPay, но код внутри обработчика никогда не вызывается.
Если я создаю физическую страницу ASPX и задаю ValidateRequest = false в заголовке и поместил тот же код в метод Page_Load, код вызывается без каких-либо проблем.
Это решает проблему, хотя я бы предпочел использовать HttpHandler для этого, поскольку он лучше подходит для этого типа функций, вместо того, чтобы иметь пустую страницу ASPX, хотя это зависит от возможности отключить проверку запроса.
Веб-приложение использует ASP.NET 2.0, а сервер - IIS6.
Ответы
Ответ 1
В IIS6 вы можете просто добавить validate="false"
в регистрацию web.config.
<add path="handler.axd" type="Foo.Bar.MyHandler" verb="*" validate="false" />
Если кто-то может пролить свет на то, как это сделать в интегрированном режиме IIS7, это также очень полезно.
Ответ 2
это довольно легко. Измените следующий фрагмент, чтобы соответствовать пути обработчика и добавьте в свой web.config:
<configuration>
....
<location path="YOUR HANDLER PATH" allowOverride="true">
<system.web>
<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>
</location>
</configuration>
Ответ 3
Для IIS7 мы добавили/изменили следующий ключ в web.config
см. http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes#0.1__Toc256770147