Запретить DiscoveryEndpoint создание экземпляра службы - PullRequest
0 голосов
/ 10 декабря 2010

Я использую DiscoveryEndpoints в WCF, но я заметил, что когда служба обнаруживается и с DiscoveryEndpoint связываются, это фактически приводит к созданию экземпляра службы. Я не хочу этого.

Это почти наверняка связано с тем, что я использую пользовательский поставщик экземпляров (для поддержки StructureMap), который применяет пользовательский InstanceProvider к каждому EndpointDispatcher.

Кажется, я хочу применить пользовательский InstanceProvider только для конечных точек, чей контракт фактически соответствует реализации службы.

Есть идеи?

1 Ответ

1 голос
/ 10 декабря 2010

Я думаю, что все получилось ... Я просто игнорирую все, что имеет установленную IsSystemEndpoint:

    public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
    {
        foreach (ChannelDispatcherBase cdb in serviceHostBase.ChannelDispatchers)
        {
            ChannelDispatcher cd = cdb as ChannelDispatcher;
            if (cd != null)
            {
                foreach (EndpointDispatcher ed in cd.Endpoints)
                {
                    if (!ed.IsSystemEndpoint) // Ignore MEX etc
                        ed.DispatchRuntime.InstanceProvider =
                            new StructureMapInstanceProvider(serviceDescription.ServiceType);
                }
            }
        }
    }
...