2014-05-02 4 views
1

Я настраиваю группу услуг, каждая из которых разговаривает друг с другом; с нижним связыванием я бы предположил, что если я «А» отправит сообщение «В» (живое) и «С» (не живое), что Б вернется, если обработка не займет больше времени, чем указано в sendTimeout, иначе это будет исключение TimeoutException. В случае «C», который потерпел неудачу и недоступен, я бы предположил, что он также вернется в пределах установленного времени sendTimeout. Для «B» это кажется правильным, но для «C» исключение EndpointNotFoundException поймано, но оно занимает намного больше, чем 5 секунд, определенных для sendTimeout. Я что-то пропустил в своей конфигурации. То же связывание используется для обслуживания и клиентаWCF EndpointNotFoundException занимает больше времени, чем TimeoutException

<bindings> 
    <netTcpBinding> 
    <binding name="SSS" maxBufferPoolSize="524288" maxBufferSize="134217728" maxReceivedMessageSize="134217728" receiveTimeout="infinite" sendTimeout="00:00:05" portSharingEnabled="true"> 
     <readerQuotas 
     maxDepth="32" 
     maxStringContentLength="65535" 
     maxArrayLength="16384" 
     maxBytesPerRead="4096" 
     maxNameTableCharCount="16384" /> 
     <security mode="None"> 
     <transport clientCredentialType="None" protectionLevel="None"/> 
     <message clientCredentialType="None"/> 
     </security> 
     <reliableSession ordered="true"/> 
    </binding> 
    </netTcpBinding> 
</bindings> 


<service behaviorConfiguration="DefaultBehavior" name="hostObj"> 
    <endpoint binding="netTcpBinding" bindingConfiguration="SSS" contract="Contract.IHost" /> 
    </service> 


<endpoint name="serverAppHostEndpoint" binding="netTcpBinding" bindingConfiguration="SSS" contract="Contract.IHost" /> 


<behaviors> 
    <serviceBehaviors> 
    <behavior name="DefaultBehavior"> 
     <!-- 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" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

ответ

1

Я не уверен на 100%, но вы можете быть натыкаясь на тот факт, что, когда клиент WCF выполняется, время ОС использует для разрешения IP-адреса не учитывается в настройке SendTimeout. Вы можете увидеть более подробную информацию: WCF Not Timing out correctly?

Смежные вопросы