为什么WCF发现不能与WCF中的自定义服务工厂主机一起工作?

为什么WCF发现不能与WCF中的自定义服务工厂主机一起工作?,wcf,Wcf,我在IIS托管的WCF服务中使用unity为DI创建了自定义ServiceHostFactory、ServiceHost、ServiceBehavior和ServiceInstanceProvider 此UDP发现停止工作后。WCF是如何创建ServiceDiscovery行为的?UDPDiscoveryEndpoint在哪里创建?我是否重写了下面代码中的某些行为 public class ServiceHostFactory : System.ServiceModel.Activation.S

我在IIS托管的WCF服务中使用unity为DI创建了自定义ServiceHostFactory、ServiceHost、ServiceBehavior和ServiceInstanceProvider

此UDP发现停止工作后。WCF是如何创建ServiceDiscovery行为的?UDPDiscoveryEndpoint在哪里创建?我是否重写了下面代码中的某些行为

public class ServiceHostFactory : System.ServiceModel.Activation.ServiceHostFactory
{
    protected override System.ServiceModel.ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {   
        return new ServiceHost(serviceType, baseAddresses);
    }
}

public class ServiceHost : System.ServiceModel.ServiceHost
{ ....
    protected override void OnOpen(TimeSpan timeout)
    {
        Description.Behaviors.Add(new ServiceBehavior());            
        base.OnOpen(timeout);
    }
}

public class ServiceBehavior : IServiceBehavior
{
    public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
    {
        foreach (ChannelDispatcherBase cdb in serviceHostBase.ChannelDispatchers)
        {
            var cd = cdb as ChannelDispatcher;
            if (cd != null)
            {
                foreach (EndpointDispatcher ed in cd.Endpoints)
                {   
                    ed.DispatchRuntime.InstanceProvider = new ServiceInstanceProvider(serviceDescription.ServiceType);
                }
            }
        }
    }
}

public class ServiceInstanceProvider : IInstanceProvider
{...
    public object GetInstance(InstanceContext instanceContext, Message message)
    {
        return Container.Instance.Resolve(_serviceType);
    }
}

为什么要使用与现有基类相同的名称来调用自己的类?(
ServiceHostFactory
ServiceHost
)这肯定会导致混淆和出错。。。如果你是从一个类中派生出来的-使用不同的类名以避免混淆…嗨,Marc,我在实际的代码中使用了不同的名称。为什么你用与现有基类相同的名称来命名你自己的类?(
ServiceHostFactory
ServiceHost
)这肯定会导致混淆和出错。。。如果你是从一个类中派生出来的-使用不同的类名以避免混淆…嗨,马克,我在实际代码中使用了不同的名称。