2011-01-17 3 views
4

У меня есть приложение Winforms, которое предоставляет службу WCF.Приложение WCF в Winforms - оно всегда однопоточное?

Из IIS я пытаюсь использовать сервис. С двух разных компьютеров я пытаюсь позвонить test1.aspx, который, в свою очередь, вызывает WCF внутри приложения Winforms.

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

Я вижу, что WCF является однопоточным, и до начала обработки вызовов 2 он должен довести до процесса вызова 1.

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

У меня Windows Server 2008 R2 и IIS 7.5

Может ли кто-нибудь мне помочь?

+1

Как вы хостящий службы WCF внутри приложения Winforms ?? В зависимости от того, как вы это делаете, это может стать одноточечным или однопоточным сервисом .... –

ответ

10

WCF ведет себя по-разному, когда служба размещается в потоке пользовательского интерфейса, что, вероятно, является вашим делом. По умолчанию обработка WCF присоединяется к контуру сообщений Windows, поэтому обработка запроса не только станет последовательной, но также остановит обработку всех событий в интерфейсе WinForms (приложение заморозится).

Чтобы избежать этого вы должны явно сказать, что вы не хотите, чтобы провести службу в UI потоке:

[ServiceBehavior(UseSynchronizationContext = false)] 
+0

Это решение: – darez

+0

Вы спасли мою жизнь !!! –

Смежные вопросы