Как получить InstanceContext из прокси-сервера времени выполнения, созданного из метаданных другого сервиса - PullRequest
0 голосов
/ 26 марта 2010

У меня есть следующая функция, пытающаяся создать обратный вызов InstanceContext из метаданных других сервисов.

    private InstanceContext GetCallbackIC(Type proxy, ServiceEndpoint endpoint){
        try {
            IDuplexContextChannel dcc;
            PropertyInfo pi = proxy.GetProperty("InnerDuplexChannel");

            if (pi.GetIndexParameters().Length > 0) {
                dcc = (IDuplexContextChannel)pi.GetValue(Activator.CreateInstance(proxy, OperationContext.Current.InstanceContext, endpoint.Binding, endpoint.Address), new object[] { 0 });
            } else {
                dcc = (IDuplexContextChannel)pi.GetValue(Activator.CreateInstance(proxy, OperationContext.Current.InstanceContext, endpoint.Binding, endpoint.Address), null);
            }
            return new InstanceContext(dcc.CallbackInstance);
        } catch (Exception ex) {
            return null;
        }
    }

«OperationContext.Current.InstanceContext» здесь неправильный, потому что он вызывает у меня исключение - «InstanceContext, предоставленный ChannelFactory, содержит UserObject, который не реализует CallbackContractType ...»

Как получить InstanceContext прокси?

Спасибо

1 Ответ

0 голосов
/ 18 мая 2010

Я решил проблему, создав объект реализации для интерфейса обратного вызова во время выполнения после получения метаданных. InstanceContext - это только оболочка. Моя первоначальная мысль не верна.

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