AppHarbor - Почему мой <httpRuntime maxRequestQueryStringLength = "XXXX" /> не работает? - PullRequest
3 голосов
/ 20 января 2012

У меня есть длинное значение строки запроса, которое мне нужно передать (я понимаю, что это сомнительная практика), и я не могу заставить его вступить в силу для моего Appharbor экземпляра приложения.

Локально, я внес это изменение в свой 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)

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

Ответы [ 2 ]

6 голосов
/ 20 января 2012

Мое оригинальное тестирование было проведено на Cassini (встроенный веб-сервер 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, все было хорошо. Надеюсь, это поможет.

0 голосов
/ 11 июня 2014

Помните, что HTTP.SYS также имеет свои ограничения!Они описаны здесь: http://support.microsoft.com/kb/820129

...