Служба отдыха WCF, размещенная на IIS, получает ошибку 400, URL-адрес слишком длинный?

У меня есть служба WCF rest\webHttpBinding, которая возвращается из браузера (IE, Chrome):

Bad Request - Invalid URL - 
HTTP Error 400. The request URL is invalid.

Служба использует GET (нам, вероятно, следует перейти на POST, но изначально нам сказали, что максимальный URL-адрес будет 50 символов), и мне любопытно, в чем проблема... просто для моего собственного разума.

Ранее у нас была эта проблема с URL-адресом, который содержал более 300 символов, поэтому в веб-конфигурации мы установили maxUrlLength, как показано ниже.

  <system.web>
    <compilation targetFramework="4.0" />
    <httpRuntime maxUrlLength ="5000" maxQueryStringLength="2048" />
  </system.web>

Это работало, когда выполнялось это обновление, но теперь оно, кажется, не работает, все, что превышает 300, мы получаем ошибку 400.

Я думаю, что что-то еще блокирует запрос сейчас. Я говорю это, потому что ранее у нас была информация в нашем собственном файле журнала и в файле журнала диагностики wcf. Теперь ни один из них не записывается ... как будто служба даже не задействована. И раньше, если бы я попал в службу на самом сервере, я бы получил эту ошибку

The length of the URL for this request exceeds 
 the configured maxUrlLength value.

Но я больше не получаю эту ошибку.

Мы не «владеем» сервером, то есть кто-то другой является администратором, и раньше на нем что-то менялось без нашего ведома.

Я оглядываюсь на SO, но большинство из них упоминают настройку диагностики. Были параметры реестра Http.sys для IIS, которые я получил от http://social.msdn.microsoft.com/Forums/eu/wcf/thread/1df4e374-6f88-40d0-9bf3-54e034c7a928, но ничего похожего не имеет. Также добавьте раздел, но я считаю, что он должен быть достаточно хорошим (согласно ответам SO)

Любые идеи, что может происходить?

Спасибо!

.net 4.0, iis 7, windows server 2008

РЕДАКТИРОВАТЬ: И, чтобы добавить, я могу обновить maxUrlLength до чего-то небольшого, скажем, 50, и использовать URL> 50, и он терпит неудачу, но терпит неудачу с «Длина URL-адреса для этого запроса превышает настроенное значение maxUrlLength». сообщение. Итак, я чувствую, что что-то еще, прежде чем оно попадет в службу WCF, вызывает проблему.


person Gern Blanston    schedule 26.12.2012    source источник
comment
Если у вас есть такие длинные URL-адреса, возможно, стоит подумать о дизайне ?? Может быть, размещать структурированные данные вместо строки запроса?   -  person bryanmac    schedule 27.12.2012
comment
Длина файла конфигурации maxurllength все еще 5000?   -  person Mike Beeler    schedule 27.12.2012
comment
Да, maxurllength по-прежнему 5000 ... добавлено Edit в исходное сообщение (с использованием небольшого значения maxUrlLength)   -  person Gern Blanston    schedule 27.12.2012


Ответы (2)


У меня была такая же проблема, и благодаря этому ответу смог решить эту проблему, добавив следующее:

<system.web>
  <httpRuntime maxUrlLength="500" />
</system.web>
person Sean Gough    schedule 27.08.2015

Ваша проблема в том, что вы используете не строку запроса, а путь. Путь имеет максимальную длину 255.
Разница между строкой запроса и путем для вызова wcf, как показано ниже
используя путь = http://testservice/service.svc/callfunction/testdata
используя строку запроса
используя строку запроса< /strong> - http://testservice/service.svc/callfunction?param1=testdata

person Diamond Reed    schedule 21.10.2017