У меня следующая проблема, в основном у меня есть служба WCF, которая отлично работает в небольших тестах. Однако, когда я пытаюсь выполнить пакетный / загрузочный тест, я получаю InvalidOperationException
с сообщением, когда метод open () вызывается для прокси-класса:
"Объект связи, System.ServiceModel.Channels.ServiceChannel, не может быть изменен, пока он находится в открытом состоянии."
Я искал в Google, но не могу найти никого, кто действительно цитирует это сообщение об исключении.
Я полагаю, что для диагностики может потребоваться дополнительная информация об услуге - когда служба получает данные одним из открытых методов, она в основном выполняет некоторую обработку и направляет данные в службу, связанную с данными (разные данные результат в другой маршрутизации). Чтобы служба работала как можно быстрее, каждый цикл приема, обработки и маршрутизации данных обрабатывается отдельным потоком в пуле потоков. Может ли это быть проблемой, возникающей из-за того, что один поток вызывает proxyClass.Open()
, а другой уже использует его? Будет ли блок lock
устранить эту проблему, если это действительно проблема?
спасибо, ребята, - я работал над этим проектом слишком долго и, наконец, хочу увидеть его за спиной - но это, похоже, последний камень преткновения, поэтому любая помощь очень ценится: - )
=============================================== ==========================
Спасибо, что подчеркнули, что я не должен использовать конструкцию using
для прокси-классов WCF. Тем не менее, статья MSDN не является наиболее четко написанным литературным произведением, поэтому один быстрый вопрос: должен ли я использовать прокси как таковой:
try
{
client = new proxy.DataConnectorServiceClient();
client.Open();
//do work
client.Close();
}
.................. //catch more specific exceptions
catch(Exception e)
{
client.Abort();
}