У меня есть службы WCF, что раз с перерывами, как правило, примерно через десять или двенадцать запросов от клиента ASP.NET. Служба использует отражение, чтобы найти классы в своей сборке (WAP-dll), которые имеют настраиваемый набор атрибутов. Сам процесс очень быстрый, обычно занимает всего несколько миллисекунд, и когда он работает, он отлично работает.
Установка точки останова в вызывающем коде и в самой службе сообщает мне, что тайм-аут происходит между вызовом из прокси-класса клиента WCF и когда этот метод фактически выполняется.
Идеи?
Update: связывание, и т.д. из web.config:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Sdd.Services.ControlPanelBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="Sdd.Services.ControlPanelBehavior"
name="Sdd.Services.ControlPanel">
<endpoint address="" binding="wsHttpBinding" contract="Sdd.Services.IControlPanel">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
UPDATE: А вот соответствующая часть из web.config клиента:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IControlPanel" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
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" establishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:81/services/ControlPanel.svc"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IControlPanel"
contract="PublicSite.IControlPanel" name="WSHttpBinding_IControlPanel">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
Есть ли у вас дополнительная информация? Какую конфигурацию вы используете (привязка, где находятся клиент и сервер, какие установлены разные таймауты). Что происходит, когда вы увеличиваете тайм-ауты? – olle
Клиент и сервер находятся в моей dev-системе, работающей под управлением UltiDev Cassini. Когда это работает, время отклика составляет менее 50 мс. Это непротиворечиво, пока оно внезапно не перестанет работать, когда оно истечет через пару минут. Я не уверен, что такое привязка - я принял наивный подход к щелчку правой кнопкой мыши, добавлю ... WCF-сервис в VS2008. Если вы можете указать мне, где я могу найти эту информацию, я буду рад сообщить об этом. Благодаря! –
Я знаю, что он атакует симптом, но, пожалуйста, проверьте, какие настройки тайм-аута привязки. Для пояснений см. Http://msdn.microsoft.com/en-us/library/ms731291.aspx. –