Народ,
Спасибо за вашу помощь с моей предыдущей проблемой файла конфигурации WCF.Вот новый.
Мой проект - это клиент приложения WinForms (.NET 4.0), который извлекает данные (и сохраняет их) из служб WCF, размещенных на IIS 7.0.Когда я сохраняю небольшую полезную нагрузку, все хорошо.Когда я пытаюсь сохранить полезную нагрузку более 8192 байт, возникает ошибка:
Программа форматирования выдавала исключение при попытке десериализации сообщения: при попытке десериализации параметра http://tempuri.org/:objEncounterType. произошла ошибкаСообщение InnerException было «Произошла ошибка при десериализации объекта типа PsychCoverage.Common.EncounterType.Максимальная квота длины строки содержимого (8192) была превышена при чтении данных XML.Эту квоту можно увеличить, изменив свойство MaxStringContentLength в объекте XmlDictionaryReaderQuotas, используемом при создании средства чтения XML.Строка 1, позиция 10809. '.Пожалуйста, смотрите InnerException для более подробной информации
Я подтвердил, что мой <binding name="">
совпадает с моим <endpoint bindingConfiguration="">
.
Я установил для моих maxReceivedMessageSize
и maxBufferPoolSize
и maxBufferSize
все 10 000 000 на моем клиенте app.config
и на web.config
.Я пытался сделать мои <readerQuota>
значения очень высокими.
В моем web.config я установил <httpRuntime maxRequestLength="10000000" />
Это от моего клиента app.config
:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="wcfAdmin_binding"
maxReceivedMessageSize="10000000"
maxBufferPoolSize="10000000"
maxBufferSize="10000000"
messageEncoding="Text"
sendTimeout="00:05:00"
receiveTimeout="00:05:00"
bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard"
textEncoding="utf-8"
useDefaultWebProxy="true"
allowCookies="false"
>
<readerQuotas maxDepth="200" maxStringContentLength="10000000" maxArrayLength="16384" maxBytesPerRead="10000000" maxNameTableCharCount="16384" />
<security mode="None"></security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<clear/>
<endpoint address="http://localhost/PsychCoverage/Admin.svc" name="AdminUIClientEndpoint" binding="basicHttpBinding" bindingConfiguration="wcfAdmin_binding" contract="PsychCoverage.Common.IAdmin">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
А это от моего сервиса web.config
:
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="False" ></serviceHostingEnvironment>
<bindings>
<basicHttpBinding>
<binding name="wcfAdmin_binding"
maxReceivedMessageSize="10000000"
maxBufferPoolSize="10000000"
maxBufferSize="10000000"
messageEncoding="Text"
sendTimeout="00:05:00"
receiveTimeout="00:05:00">
<readerQuotas maxDepth="200"
maxStringContentLength="10000000"
maxArrayLength="16384"
maxBytesPerRead="10000000"
maxNameTableCharCount="16384" />
<security mode="None"></security>
</binding>
<binding name="wcfClientWebPortal_binding"
maxReceivedMessageSize="10000000"
maxBufferPoolSize="10000000"
maxBufferSize="10000000"
messageEncoding="Text"
sendTimeout="00:05:00"
receiveTimeout="00:05:00">
<readerQuotas maxDepth="200"
maxStringContentLength="10000000"
maxArrayLength="16384"
maxBytesPerRead="10000000"
maxNameTableCharCount="16384" />
<security mode="None"></security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="wcfBehavior" name="PsychCoverage.WcfMT.Admin">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="wcfAdmin_binding"
name="AdminEndpoint"
bindingName="wcfAdmin_binding"
contract="PsychCoverage.Common.IAdmin">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
<service behaviorConfiguration="wcfBehavior" name="PsychCoverage.WcfMT.ClientWebPortal">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="wcfClientWebPortal_binding"
name="ClientWebPortalEndpoint"
bindingName="wcfClientWebPortal_binding"
contract="PsychCoverage.Common.IClientWebPortal">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="wcfBehavior">
<!-- To avoid disclosing metadata information,
set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="False" />
<!-- To receive exception details in faults for debugging purposes,
set the value below to true. Set to false before deployment
to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="100" maxConcurrentInstances="100" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Большое спасибо заранее.