Запретить DiscoveryEndpoint создание экземпляра службы
Я использую DiscoveryEndpoints в WCF, но я заметил, что когда служба обнаруживается и с DiscoveryEndpoint связываются, это фактически вызывает создание экземпляра службы. Я не хочу это.
Это почти наверняка связано с тем, что я использую пользовательский поставщик экземпляров (для поддержки StructureMap), который применяет пользовательский InstanceProvider к каждому EndpointDispatcher.
Кажется, я хочу применить пользовательский InstanceProvider только для конечных точек, чей контракт фактически соответствует реализации службы.
Есть идеи?
1 ответ
Решение
Я думаю, что я решил это... Я просто игнорирую все, что имеет установленную 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);
}
}
}
}