2011-01-17 2 views
4

J'ai une application Winforms qui expose un service WCF. Depuis IIS, j'essaie de consommer le service. De 2 ordinateurs différents, j'essaie d'appeler le test1.aspx qui à son tour appelle le WCF dans l'application Winforms.WCF dans l'application Winforms - est-il toujours mono-thread?

test1.aspx => from computer 1 => First Call 
test1.aspx => from computer 2 => Second Call 

Je vois que la WCF est mono-thread, et avant qu'il ne commence à traiter CALL 2 dont il a besoin pour terminer au processus d'appel 1.

[ServiceBehavior(IncludeExceptionDetailInFaults = true, 
       ConcurrencyMode=ConcurrencyMode.Multiple, 
       InstanceContextMode=InstanceContextMode.PerSession)] 

J'ai Windows Server 2008 R2 et IIS 7.5

Quelqu'un peut-il m'aider?

+1

Comment êtes-vous l'hébergement de votre service WCF dans l'application Winforms ?? Selon la façon dont vous le faites, il pourrait finir par être un singleton ou un service monothread .... –

Répondre

10

WCF se comporte différemment lorsque le service est hébergé dans un thread d'interface utilisateur, ce qui est probablement votre cas. Par défaut, le traitement WCF se joint à la boucle de messages Windows pour que le traitement des demandes ne devienne pas seulement un traitement en série, mais également tout le traitement des événements dans l'interface utilisateur WinForms (l'application va se bloquer).

Pour éviter ce comportement, vous devez dire explicitement que vous ne voulez pas accueillir le service dans thread d'interface utilisateur:

[ServiceBehavior(UseSynchronizationContext = false)] 
+0

C'est la solution: – darez

+0

Vous m'avez sauvé la vie !!! –

Questions connexes