2012-06-21 3 views
1

Похоже, этот вопрос уже задан тысячу раз, но проблемы с конфигурацией каждого человека различны. У меня есть сервер WCF, который обслуживает изображения, а также получает запросы на загрузку изображений. При загрузке изображений я получаю ошибку 400, когда размер больше 65 тыс..Служба WCF -> max

Я повернул след на WCF, и я получаю точную ошибку

The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element. 

Я знаю, что мне нужно увеличить эти параметры, но я просто не могу найти, где он должен быть в моей сети .config файл. Вот что я имею в web.config:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding_ITransferService" closeTimeout="04:01:00" 
      openTimeout="04:01:00" receiveTimeout="04:10:00" sendTimeout="04:01:00" 
      maxBufferSize="2147483647" maxBufferPoolSize="2147483647" 
      maxReceivedMessageSize="2147483647" 
      textEncoding="utf-8" 
      transferMode="Streamed"> 
      <readerQuotas maxDepth="128" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
      <security mode="None"> 
      <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> 
      <message clientCredentialType="UserName" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="returnFaults"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service name="ESLMobileIhaServiceClient.ServiceMobileIha" behaviorConfiguration="returnFaults"> 
     <endpoint contract="ESLMobileIhaServiceClient.ServiceMobileIha" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITransferService"/> 
     <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex"> 
     </endpoint> 
     </service> 
    </services> 
    </system.serviceModel> 
    <system.webServer> 

Кто-нибудь здесь whih может помочь мне с этим? ;) пытается с 4 часов с разными подходами, найденными в stackoverflow, но ничего не помогает - к сожалению.

UPDATE:

запрос является загрузка файла от клиента к серверу. Ошибка ошибки появляется в файле журнала серверов при включении диагностики.

SERVER Web.config

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding_ITransferService" closeTimeout="04:01:00" 
      openTimeout="04:01:00" receiveTimeout="04:10:00" sendTimeout="04:01:00" 
      maxBufferSize="2147483647" maxBufferPoolSize="2147483647" 
      maxReceivedMessageSize="2147483647" 
      textEncoding="utf-8" 
      transferMode="Streamed"> 
      <readerQuotas maxDepth="128" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
      <security mode="None"> 
      <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> 
      <message clientCredentialType="UserName" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="returnFaults"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service name="ESLMobileIhaServiceClient.ServiceMobileIha" behaviorConfiguration="returnFaults"> 
     <endpoint contract="ESLMobileIhaServiceClient.ServiceMobileIha" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITransferService"/> 
     <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex"> 
     </endpoint> 
     </service> 
    </services> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
</configuration> 

Client App.config

<?xml version="1.0"?> 
<configuration> 
    <appSettings> 
    <add key="InputFileLocation" value="U:\vorlagen\esl_evu_demo\Mobile Instandhaltung\Testdaten\Stammdaten\"/> 
    <add key="OutputFileLocationOpen" value="U:\vorlagen\esl_evu_demo\Mobile Instandhaltung\Testdaten\offen\"/> 
    <add key="OutputFileLocationClosed" value="U:\vorlagen\esl_evu_demo\Mobile Instandhaltung\Testdaten\abgeschlossen\"/> 
    <add key="ImageObserveLocation" value="U:\vorlagen\esl_evu_demo\Mobile Instandhaltung\Testdaten\kamerabilder\"/> 
    <add key="ImageSaveLocation" value="U:\vorlagen\esl_evu_demo\Mobile Instandhaltung\Testdaten\savedimages\"/> 
    <add key="DeleteImageAfterCopy" value="true"/> 
    <add key="HelpFile_de_DE" value="ESL_EVU_1031_Mobile_Instandhaltung.pdf"/> 
    <add key="HelpFile_fr_FR" value=""/> 
    <add key="BackupLocation" value="backup\"/> 
    <add key="NumOfBackups" value="3"/> 
    <add key="Language" value="de_DE"/> 
    <add key="FontType" value="Arial"/> 
    <add key="TextSize" value="10"/> 
    <add key="TitleTextSize" value="12"/> 
    <add key="ButtonTextSize" value="12"/> 
    <add key="IdentifikationGeraet" value="Kontrolle/Instandhaltung"/> 
    <add key="ClientSettingsProvider.ServiceUri" value=""/> 
    </appSettings> 
    <system.web> 
    <membership defaultProvider="ClientAuthenticationMembershipProvider"> 
     <providers> 
     <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri=""/> 
     </providers> 
    </membership> 
    <roleManager defaultProvider="ClientRoleProvider" enabled="true"> 
     <providers> 
     <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400"/> 
     </providers> 
    </roleManager> 
    </system.web> 
    <system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding_ServiceMobileIha" closeTimeout="00:01:00" 
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
      maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
      useDefaultWebProxy="true"> 
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" 
      maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
      <security mode="None"> 
      <transport clientCredentialType="None" proxyCredentialType="None" 
       realm="" /> 
      <message clientCredentialType="UserName" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://localhost:51515/ServiceMobileIha.svc" 
     binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ServiceMobileIha" 
     contract="ServiceReference1.ServiceMobileIha" name="BasicHttpBinding_ServiceMobileIha" /> 
    </client> 
    </system.serviceModel> 

<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration> 
+1

Может быть, это глупый вопрос, но вы обновили ссылку на сервис своего клиента после того, как вы внесли изменения в maxReceivedMessageSize? Кроме того, вы уверены, что измененный вами web.config является тем, который используется вашим сервисом? Как вы размещаете сервис ... убедитесь, что ваш app.config имеет эту же информацию. Раньше я менял свой web.config, но он размещен в приложении с app.config и забыл обновить его. – Thelonias

+0

да, я обновил его – yves

ответ

0

Это может быть проблема стороне клиента. Вы меняли maxReceivedMessageSize, maxBufferPoolSize и maxBufferSize на вашей стороне клиента?

+0

, как вы видите в моем обновленном конфиге клиента и сервера - все его настроено на высокие значения;) хотя это не работает – yves

0

Это особенно влияет на конфигурацию maxReceivedMessageSize, но это может быть клиент или сервер. Поскольку клиент получает ответ, но сервер получает запрос. Таким образом, это зависит от того, какой из них слишком велик. Например, если клиент отправляет большую полезную нагрузку, но сервер отправляет обратно пустоту или bool или что-то маленькое, это конфигурация сервера, которая должна измениться, и наоборот.

1

заменить:

<system.web> 
    <httpRuntime maxRequestLength="2147483647" /> 
    </system.web> 

с

<system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    <httpRuntime maxRequestLength="2147483647" /> 
    </system.web> 

разрешить общий httpRuntime -> maxRequestLenght увеличения;)

имеют хорошие выходные ребята