Я посмотрел несколько похожих тем на SO, но не нашел ни одной, которая бы помогала с этим.
Иметь службу WCF, которая обрабатывает XML. Файл XML, с которого я читаю, ~ 600K.
Вызов работает для небольших XML-файлов (большую часть времени), но на больших файлах я получаю сообщение об ошибке:
System.ServiceModel.Security.MessageSecurityException:
Необеспеченная или неправильно защищенная ошибка была получена от другой стороны. См. Внутреннее исключение FaultException для получения кода ошибки и подробностей.
где внутреннее исключение:
System.ServiceModel.FaultException:
Сообщение не может быть обработано. Скорее всего, это связано с тем, что действие 'http://tempuri.org/ISapListener/ProcessSapRoles' неверно, или потому что сообщение содержит недопустимый токен или токен контекста безопасности с истекшим сроком действия или из-за несоответствия между привязками. Маркер контекста безопасности будет недействительным, если служба прервет канал из-за неактивности. Чтобы предотвратить прерывание незанятыми сеансами службы преждевременно, увеличьте время ожидания приема для привязки конечной точки службы.
Как я уже сказал ... он работает для небольших файлов, и мои тайм-ауты открытия, отправки, получения, закрытия и неактивности установлены на 10 минут. Это терпит неудачу приблизительно через 20-30 секунд.
Кроме того, часы на сервере и клиенте идеально синхронизированы (я видел это как ответ).
Мои конфигурационные файлы в том виде, в каком они сейчас есть (я играл с большим количеством настроек):
Сервер:
<bindings>
<wsHttpBinding>
<binding name="wsHttpBinding_Custom" closeTimeout="00:00:10"
openTimeout="00:01:00" receiveTimeout="00:10:00"
sendTimeout="00:10:00" bypassProxyOnLocal="false"
transactionFlow="false" hostNameComparisonMode="StrongWildcard"
messageEncoding="Text" textEncoding="utf-8"
useDefaultWebProxy="true" allowCookies="false"
maxReceivedMessageSize="1024768"
maxBufferPoolSize="1024768" >
<readerQuotas maxDepth="32" maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows"
negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="CSA.GS3.Services.SapListenerBehavior"
name="CSA.GS3.Services.SapListener">
<endpoint address="" binding="wsHttpBinding"
bindingConfiguration="wsHttpBinding_Custom"
contract="CSA.GS3.Services.ISapListener">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="CSA.GS3.Services.SapListenerBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Клиент:
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_ISapListener1"
closeTimeout="00:10:00" openTimeout="00:10:00"
receiveTimeout="00:10:00" sendTimeout="00:10:00"
bypassProxyOnLocal="false" transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
messageEncoding="Text" textEncoding="utf-8"
useDefaultWebProxy="true" allowCookies="false"
maxBufferPoolSize="1024768"
maxReceivedMessageSize="1024768">
<readerQuotas maxDepth="32" maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows"
negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://gs3-test.us.tycoelectronics.com/SapListener/SapListener.svc"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ISapListener1"
contract="Gs3TestSapListener.ISapListener"
name="WSHttpBinding_ISapListener1">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
У меня включена трассировка в службе, но я не вижу смысла в файлах журналов.
Другие исключения, которые я получил во время игры с настройками конфигурации:
System.ServiceModel.Security.SecurityNegotiationException
Защищенный канал не может быть открыт из-за сбоя согласования безопасности с удаленной конечной точкой.
и
System.ServiceModel.ServiceActivationException
Запрошенная служба 'http: //../SapListener.svc' не может быть активирована.