Так работает обратный вызов WCF. Каждый обратный вызов обслуживается собственным потоком. Я думаю, что причина этого заключается в том, что у вас нет SynchronizationContext
, который будет указывать поступающий запрос обратно в текущий поток (и, надеюсь, текущий экземпляр вашей страницы). Противоположный пример - обратные вызовы, используемые в приложениях WPF или WinForm. Поток пользовательского интерфейса в этих приложениях по умолчанию имеет SynchronizationContext
, поэтому, если вы открываете прокси службы в потоке пользовательского интерфейса, запросы на обратный вызов направляются обратно в поток пользовательского интерфейса - это иногда вызывает другие проблемы, поэтому вы можете отключить использование SynchronizationContext
в ServiceBehaviorAttribute
,
Но даже если вы решите эту проблему, вы столкнетесь с той же проблемой в ASP.NET. Каждый запрос к ASP.NET создает новый экземпляр обработчика. Таким образом, каждый запрос от вашего браузера будет создавать новый экземпляр страницы.
Я считаю, что если клиент - ASP.NET, то обратный вызов WCF не имеет смысла, потому что я до сих пор не видел работающей реализации.