Шаблон REST WCF 4 и строки base64 — HTTP 400

Я пытаюсь отправить длинную (около 155000 символов) строку base64 в службу WCF REST, используя шаблон wcf 4 REST, предоставленный Microsoft. Всякий раз, когда я пытаюсь отправить XML с помощью метода post либо из клиентского приложения, либо из скрипача, я получаю код состояния HTTP 400 в ответ на мой запрос. У меня есть соответствующие настройки web.config, собранные из различных сообщений блога и других сообщений stackoverflow.

   <bindings>
      <webHttpBinding>
        <binding name="httpBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" transferMode="Streamed"  openTimeout="00:25:00" closeTimeout="00:25:00" sendTimeout="00:25:00" receiveTimeout="00:25:00">
          <readerQuotas maxDepth="64"
                 maxStringContentLength="2147483647"
                 maxArrayLength="2147483647"
                 maxBytesPerRead="2147483647"
                 maxNameTableCharCount="2147483647"/>
        </binding>
      </webHttpBinding>
    </bindings>  

что мне здесь не хватает? Все остальное работает отлично; Я отправляю в службу запросы в формате text/xml, а все остальное возвращает 200, если я не работаю со строкой base64. Я знаю, что есть миллион других сообщений о размере сообщения wcf, но я был бы признателен, если бы кто-нибудь быстро взглянул на мой.

Вот ссылка на образец запроса, который я пытаюсь обработать с помощью службы wcf.

Я был бы признателен за любые мысли, которые могут быть у кого-то.


person jdb1a1    schedule 07.07.2011    source источник


Ответы (1)


Попробуйте включить трассировку на стороне сервера, чтобы узнать, что заставляет сервер отклонять запрос. Кроме того, дважды проверьте, что:

  • Элемент <endpoint> для вашего сервиса имеет атрибут bindingConfiguration со значением "httpBinding".
  • Элемент <service> для вашей службы представляет собой атрибут name, который соответствует полному имени класса службы (т. е. с пространством имен, по сути, с тем же значением, которое вы используете в файле .svc).
person carlosfigueira    schedule 07.07.2011
comment
Спасибо за ответ; Я использую маршруты для управления запросами, поступающими в службу, без файлов .svc. Я включу трассировку и посмотрю, что у меня получится. - person jdb1a1; 08.07.2011
comment
Я включил трассировку, и она говорит: Превышена максимальная квота размера сообщения для входящих сообщений (65536). Для меня это означает, что он не получает правки максимального размера сообщений, которые я передаю в web.config. Как должен выглядеть файл web.config для шаблона отдыха wcf 4? - person jdb1a1; 08.07.2011
comment
Если вы используете маршруты, то вы используете привязку по умолчанию, созданную WebServiceHostFactory (я полагаю, поскольку вы используете маршруты и REST). Измените настройки привязки по умолчанию, вы можете просто удалить атрибут name из web.config: ‹webHttpBinding› ‹binding name= maxReceivedMessageSize=1000000... /› - person carlosfigueira; 08.07.2011
comment
Спасибо, но это не помогло. Я собираюсь сделать новый пост со всем web.config, который я использую в нем, чтобы узнать, есть ли у кого-нибудь какие-либо идеи. - person jdb1a1; 08.07.2011