TargetInvocationException при нескольких вызовах службы WCF - PullRequest
0 голосов
/ 26 мая 2010

Я использую 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 ]

2 голосов
/ 26 мая 2010

TargetInvocationException должен иметь свойство InnerException, содержащее фактическое исключение, оно может дать вам некоторые подсказки.

0 голосов
/ 07 июня 2012

Нет, это не дает никакой подсказки. Удаленный сервер возвращает ошибку Not Found.

Вызов async выполнен, но он никогда не отправляется на сервер и сразу же получает ошибку в обратном вызове

...