У меня есть клиент WCF, который создает самостоятельно размещенный сервис.Клиент в конечном итоге будет размещать другие конечные точки службы, поэтому клиент ведет список локальных ссылок на службы m_services и вызывает методы службы для каждой поддерживаемой конечной точки.ServiceHost создан, а клиент создан в конечной точке.Несколько установочных вызовов сделаны к службе успешно.
Еще один вызов к службе сделан, который быстро возвращается, но затем клиент ожидает асинхронного возврата делегату обратного вызова.Есть многочисленные обратные вызовы, которые выполняются, примерно за 1 секунду в течение примерно 5 минут, в ожидании определенного метода обратного вызова с передачей данных.
Пока клиент ожидает ответа, я в итоге получаюследующие исключения для моей консоли вывода:
A first chance exception of type 'System.ServiceModel.CommunicationObjectAbortedException' occurred in System.ServiceModel.dll
A first chance exception of type 'System.ServiceModel.CommunicationObjectAbortedException' occurred in System.ServiceModel.dll
A first chance exception of type 'System.ServiceModel.CommunicationObjectAbortedException' occurred in System.Runtime.DurableInstancing.dll
A first chance exception of type 'System.ServiceModel.CommunicationObjectAbortedException' occurred in System.Runtime.DurableInstancing.dll
A first chance exception of type 'System.ServiceModel.CommunicationException' occurred in System.Runtime.DurableInstancing.dll
Ниже приведен код, который я использую для создания ServiceHost для самостоятельной службы.Я делаю что-то неправильно с настройкой моего ServiceHost и клиента?Я не уверен, почему изначально клиент реагирует на вызовы и дает ожидаемые результаты, но в конечном итоге он выходит из строя и объект связи прерывается.Первоначально у меня был ServiceHost в качестве локальной переменной для метода, который его создавал, но он был преобразован в поле класса, полагая, что это мог быть сборщик мусора.
m_selfHost = new ServiceHost(hostType);
var binding = new WSDualHttpBinding();
ContractDescription contractDescription =
ContractDescription.GetContract(contractType);
EndpointAddress endpointAddress = new EndpointAddress(Properties.Settings.Default.SelfHostedServiceUrl);
ServiceEndpoint endpoint = new ServiceEndpoint(contractDescription, binding, endpointAddress);
m_selfHost.AddServiceEndpoint(endpoint);
DllAnalyzerServiceClient service = new DllAnalyzerServiceClient(m_instanceContext, binding, endpointAddress);
m_selfHost.Open();
service.Subscribe();
service.DynamicallyLoadDll(crxDllFile);
m_services.Add(service);