Асинхронный сервис WCF блокирует ASP-приложение - PullRequest
0 голосов
/ 26 февраля 2011

У меня есть приложение ASP (MVC2), которое вызывает службу WCF.Служба займет много времени, поэтому я не хочу, чтобы клиентское приложение ASP ожидало его завершения.Он записывает свой статус в базу данных, и он доступен клиенту ASP.
Я вызываю службу асинхронно, но мое приложение ASP все еще зависает, когда пытается перейти на следующую страницу.Я подозреваю, что это из-за зависания потока, ожидающего ответа службы.Каков наилучший способ реализации этого интерфейса, чтобы приложение ASP могло продолжаться и не блокироваться?

1 Ответ

0 голосов
/ 26 февраля 2011

Если вы не хотите знать результат вызова веб-службы, вам не нужен асинхронный вызов.Вам нужен один способ (также известный как огонь и забыть) вызов.Добавьте IsOneWay=true к вашему OperationContract как:

[ServiceContract]
public interface MyServiceContract
{
  [OperationContract(IsOneWay=true)]
  void MyOperation(Data data);
}

В одну сторону операция должна вернуть voidКлиент будет только ждать, чтобы установить соединение и отправить данные.Он не будет ждать окончания обработки.

...