2012-04-15 3 views
1

Я создал службу для получения больших файлов. После этого я опубликовал его на своем локальном IIS7. После этого я создал тестовый клиент с ссылкой на службу. Когда я пытаюсь отправить большой файл на сервер, у меня есть: Плохой запрос (400).WCF service 400 bad request

Служба отслеживания этого исключения: Превышена максимальная квота на размер сообщений для входящих сообщений (65536). Чтобы увеличить квоту, используйте свойство MaxReceivedMessageSize в соответствующем связывающем элементе.

сервера конфигурации:

<system.web> 
<compilation debug="true" targetFramework="4.0" /> 
<httpRuntime maxRequestLength="2097151" useFullyQualifiedRedirectUrl="true" executionTimeout="14400"/> 
<customErrors mode="Off" /></system.web> 

Связывание

 <wsHttpBinding> 
    <binding name="wsBufferedHttpsBinding" messageEncoding="Mtom" 
      maxReceivedMessageSize="11534336" maxBufferPoolSize="524288" 
      sendTimeout="00:05:00" receiveTimeout="00:05:00" openTimeout="00:05:00" closeTimeout="00:05:00" > 
     <readerQuotas maxDepth="64" maxStringContentLength="11534336" maxArrayLength="11534336" 
      maxBytesPerRead="11534336" maxNameTableCharCount="16384" /> 
    </binding> 
    </wsHttpBinding> 

Сервис

 <service name="MyService"> 
    <endpoint address="" 
       binding="wsHttpBinding" 
       bindingName="wsBufferedHttpsBinding" 
       contract="IServiceContract"> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> 
    <endpoint address="soap12IssuedToken" binding="customBinding" 
     bindingConfiguration="soap12IssuedToken" name="soap12IssuedToken" 
     bindingNamespace="http://url" 
     contract="IServiceContract" /> 
    </service> 

Что, черт возьми, не так с этой услугой? Я устанавливал этот размер сообщения повсюду.

+0

Насколько велики файлы для передачи? Это может помочь использовать [потоковое соединение с привязкой http] (http://msdn.microsoft.com/en-us/library/ms733742.aspx). –

+0

Забыл сказать - он сбой при отправке файла 1mb. –

+0

Я нашел этот очень интересный комментарий об этой проблеме: http://stackoverflow.com/a/4808527/383187. Но в моем отслеживании нет сообщений «Без конечной точки» –

ответ

2

Похоже, главная проблема заключается в том, что ваша конечная точка не ссылается на конфигурацию привязки. Поэтому Вы используете по умолчанию 65536.

Есть несколько других вещей, чтобы проверить:

  • Вы 2 конечные точки для того же договора вы используете один, где MaxReceivedMessageSize установлен?
  • Соответствует ли конфигурация клиента клиенту на сервере?
  • Вам также может понадобиться установить «maxBufferPoolSize» и «MaxBufferSize»
0

Ответ довольно прост:

<endpoint address="" 
      binding="wsHttpBinding" 
      bindingName="wsBufferedHttpsBinding" 
      contract="IServiceContract"> 

Я не видел, что там BINDINGNAME вместо bindingConfiguration

0

Я также столкнулся с этой проблемой позже, но затем решил ее, добавив dataContractSerializer maxItemsInObjectGraph = "2147483646" в действии услуги