WCF в приложении Winforms - это всегда однопоточное?
У меня есть приложение Winforms, которое предоставляет службу WCF.
Из IIS я пытаюсь использовать сервис. С 2 разных компьютеров пытаюсь позвонить test1.aspx
который в свою очередь вызывает WCF внутри приложения Winforms.
test1.aspx => from computer 1 => First Call
test1.aspx => from computer 2 => Second Call
Я вижу, что WCF является однопоточным, и прежде чем он начнет обрабатывать CALL 2, он должен завершить обработку CALL 1.
[ServiceBehavior(IncludeExceptionDetailInFaults = true,
ConcurrencyMode=ConcurrencyMode.Multiple,
InstanceContextMode=InstanceContextMode.PerSession)]
У меня Windows Server 2008 R2 и IIS 7.5
Может кто-нибудь мне помочь?
1 ответ
WCF ведет себя по-разному, когда служба размещается в потоке пользовательского интерфейса, что, вероятно, является вашим случаем. По умолчанию обработка WCF включается в цикл обработки сообщений Windows, поэтому обработка запросов не только станет последовательной, но и остановит всю обработку событий в пользовательском интерфейсе WinForms (приложение зависнет).
Чтобы избежать этого, вы должны явно указать, что не хотите размещать службу в потоке пользовательского интерфейса:
[ServiceBehavior(UseSynchronizationContext = false)]