2012-01-19 3 views
3

У меня есть длинное значение querystring, которое мне нужно передать (сама по себе сомнительная практика, я понимаю), и я не могу заставить его вступить в силу на моем примере приложения Appharbor.AppHarbor - Почему мой <httpRuntime maxRequestQueryStringLength = "XXXX" /> не работает?

Локально, я сделал это изменение в мое web.config и подтвердил, что URL в вопросе работает локально:

<httpRuntime maxQueryStringLength="2097151"/> 

И заверил, что она существует в результате web.config вывесить преобразования по моему Web.Release.config. Тем не менее, когда я нажимаю на AppHarbor, преобразование должно забрать его ... но я все еще получаю это исключение:

The length of the query string for this request exceeds the configured maxQueryStringLength value. 

трассировки стека:

at System.Web.HttpRequest.ValidateInputIfRequiredByConfig() 
at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context) 

Есть идеи? Спасибо за вашу помощь.

+0

Если вы установили параметр в свой файл master.config, почему вы также делаете материал с помощью web.release.config? Во всяком случае, вы можете проверить, что комбо дает желаемый результат: webconfigtransformationtester.apphb.com – friism

+0

Извините, плохо сформулированный - «гарантировал, что он существует в моем Web.Release.config». Я действительно имел в виду, что я обеспечил в результате преобразованный web.config провел ожидаемый сегмент. Я редактировал исходный вопрос. – TimDog

ответ

6

Мое первоначальное тестирование было выполнено против Кассини (встроенный веб-сервер VS 2010). Я оттолкнул локально IIS 7.5 и обнаружил эту ошибку:

HTTP Error 404.15 - Not Found 
The request filtering module is configured to deny a request where the query string is too long. 

который появился потому, что я не уточнил maxQueryLength в <system.webServer> разделе моего web.config, а также <httpRuntime>. Таким образом, ответ должен указать ОБА разделы <system.web> и <system.webServer>:

<system.web> 
    <httpRuntime maxQueryStringLength="2097151"/> 
</system.web> 

И потом:

<system.webServer> 
    <security> 
    <requestFiltering> 
     <requestLimits maxQueryString="2097151"/> 
    </requestFiltering> 
    </security> 
</system.webServer> 

Когда я нажал эту версию моей конфигурации к AppHarbor, все было хорошо. Надеюсь это поможет.