Como chamar um serviço WCF Singleton dentro de um serviço WCF Singleton sem pendurar?

StackOverflow https://stackoverflow.com/questions/2632571

  •  26-09-2019
  •  | 
  •  

Pergunta

Eu tenho dois serviços, um que chama outro. Ambos são marcados como singletons da seguinte forma:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
    ConcurrencyMode = ConcurrencyMode.Multiple)]
public class Service : IService

E eu as configurei com um serviço de serviço da seguinte maneira:

ServiceHost serviceHost = new ServiceHost(singletonElement);
serviceHost.Open();

Quando o serviço pai tenta ligar para o Serviço Infantil na mesma máquina, o serviço pai está pendurado, aguardando o serviço infantil.

Já estou pensando em me afastar do modelo Singleton, mas há algo errado com minha abordagem? Existe uma explicação para esse comportamento e uma maneira de sair disso?

Foi útil?

Solução 2

O problema era que eu estava hospedando em um aplicativo WPF e não defini usaSynchronizationContext como false. Isso faz com que o host de serviço WCF no encadeamento da interface do usuário, causando um impasse quando você tem um serviço (no thread da interface do usuário) chamando outro serviço (também em um thread da interface do usuário).

Outras dicas

O serviço pai o pendura porque pode estar porque o método do serviço infantil está demorando muito. Se demorar muito tempo para retornar, ligue de maneira assíncrona ou faça o método servidor infantil IsOneWayo=True No OPEARATIONCONTRATTRIBUTIFICAL.

O serviço de uma maneira é Fogo e esqueça tipo de chamada não retorna nenhum valor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top