Ошибка вызова нескольких служб WCF - удаленный объект не может быть использован - PullRequest
1 голос
/ 11 августа 2010

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

object result1 = null;
object result2 = null;

using (OperationContextScope contextScope = new OperationContextScope((IContextChannel)ServiceInstance))
{
   MyService.AddHeaders();
   result1 =  ServiceInstance.Method1()
}

//some other processing depending on the value of result1

using (OperationContextScope contextScope = new OperationContextScope((IContextChannel)ServiceInstance))
{
   MyService.AddHeaders();
   result2 =  ServiceInstance.Method2()
}

Теперь, чтобы улучшить производительность, я попытался сделать следующее:

using (OperationContextScope contextScope = new OperationContextScope((IContextChannel)ServiceInstance))
{
   MyService.AddHeaders();
   result1 =  ServiceInstance.Method1()
   result2 =  ServiceInstance.Method2()
}

//some other processing depending on the value of result1 && result2

Но это не удается из-за ошибки:«удаленный объект не может быть использован», и во внутреннем исключении удаленный объект - ChannelService.

Может ли кто-нибудь помочь мне, как я могу объединить несколько вызовов службы WCF в рамках одного OperationContextScope?

Спасибо Аравинд

Ответы [ 2 ]

0 голосов
/ 02 сентября 2010

Если вы хотите совершить более одного звонка в пределах одного OperationContextScope, вы можете использовать Innerchannel услуги.

    using (OperationContextScope contextScope = new  
        OperationContextScope((IContextChannel)abc.InnerChannel))
        {

            /* Add Headers */
                    MessageHeader header
            = MessageHeader.CreateHeader(
            "Service-Bound-CustomHeader",
            "http://Microsoft.WCF.Documentation",
            "Custom Happy Value."
            );

                    header = MessageHeader.CreateHeader(
                "Service-Bound-OneWayHeader",
                "http://Microsoft.WCF.Documentation",
                "Different Happy Value."
              );

            OperationContext.Current.OutgoingMessageHeaders.Add(header);

            Console.WriteLine(abc.GetData(100));
            Console.WriteLine(abc.GetDataUsingDataContract(new ServiceReference1.CompositeType()).ToString());
        }

0 голосов
/ 11 августа 2010

Я не уверен, но это может быть потому, что ваша услуга может быть однократной (и / или не поддерживает сеансы).Возможно, вы захотите настроить поведение службы, чтобы это работало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...