TargetInvocationException при множественных вызовах службы WCF
Я использую SL 4 и WCF-сервис.net-4 с PollingDuplexHttpBinding. Вызов службы и обратный вызов клиента из службы работает нормально. Но как только я позвоню в службу, скажем 15 раз, не дожидаясь асинхронного ответа, я получу исключение TargetInvocationException после получения 0, 1 или 2 успешных ответов.
Мои атрибуты для сервиса:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple)]
Это в моем web.config:
<behaviors>
<serviceBehaviors>
<behavior name="RecordProviderServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
<serviceTimeouts transactionTimeout="05:05:00" />
<serviceThrottling maxConcurrentCalls="500" maxConcurrentSessions="500"
maxConcurrentInstances="2147483647" />
</behavior>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
<bindings>
<pollingDuplexHttpBinding>
<binding name="multipleMessagesPerPollPollingDuplexHttpBinding"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
maxOutputDelay="00:00:00.200" duplexMode="MultipleMessagesPerPoll" />
</pollingDuplexHttpBinding>
</bindings>
И вот так я создаю экземпляр сервиса на стороне клиента:
var binding = new PollingDuplexHttpBinding(PollingDuplexMode.MultipleMessagesPerPoll)
{
MaxBufferSize = 2147483647,
MaxReceivedMessageSize = 2147483647
};
_service = new ServiceClient(new InstanceContext(this),
binding,
new EndpointAddress("path to .svc"));
Как я новичок в WCF: я что-то пропустил?
2 ответа
У TargetInvocationException должно быть свойство InnerException, содержащее фактическое исключение, оно может дать вам некоторые подсказки.
Нет, это не дает никакой подсказки. Удаленный сервер возвращает ошибку Not Found.
Вызов async выполнен, но он никогда не отправляется на сервер и сразу получает ошибку в обратном вызове.