Im not sure how this is going wrong, but I have configured a Windsor
component in my app.config, and a WCF Service. This service has an HTTP
endpoint, and a MEX http endpoint, both of which are advertised via an
HTTP 'discovery endpoint' (not UDP).
Note: My WCF config works without Windsor involved (using a simple
ServiceHost).
The config is LIKE this (pseudo)
<service name="MyService"
behaviorConfiguration="RemoteDiscoveryBehavior">
<endpoint name="customerClient" address=" IMyService"
binding="wsHttpBinding"
bindingConfiguration="wsHttpBindingInsecure"
contract="IMyService"/>
<!-- this is the endpoint address that must be configured in the
ServiceRouter -->
<endpoint name="httpDiscoveryEpt"
kind="discoveryEndpoint"
bindingConfiguration="wsDualHttpBindingInsecure"
binding="wsDualHttpBinding"
address="Discovery"/>
<!-- this is used by the Router to extract the binding
information -->
<endpoint address="MEX" binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
My server code then looks like this:
var container = new WindsorContainer(new
Castle.Windsor.Configuration.Interpreters.XmlInterpreter());
DefaultServiceHostFactory factory = new
DefaultServiceHostFactory(container.Kernel);
var gatewayHost = factory.CreateServiceHost("MyService", new Uri[] { new
Uri("http://localhost:81/") });
gatewayHost.Open();
The MyService component is instantiated by Windsor as soon as the
service-host is created, but when the client attempts to perform a
"Find()" to get the service information for the published endpoints, the
client gets this error:
{An ExceptionDetail, likely created by
IncludeExceptionDetailInFaults=true, whose value is:
System.Reflection.TargetInvocationException: Exception has been thrown
by the target of an invocation. ----> System.InvalidOperationException:
The type argument passed to the generic ChannelFactory class must be an
interface type.
at System.ServiceModel.ChannelFactory`1..ctor(Type channelType)
at System.ServiceModel.ChannelFactory`1..ctor(String
endpointConfigurationName, EndpointAddress remoteAddress)
at System.ServiceModel.ChannelFactory`1..ctor(String
endpointConfigurationName)
at Castle.Proxies.ChannelFactory`1Proxy..ctor(IInterceptor[] , String
)
--- End of inner ExceptionDetail stack trace ---
at System.RuntimeMethodHandle._InvokeConstructor(IRuntimeMethodInfo
method, Object[] args, SignatureStruct& signature, RuntimeType
declaringType)
at System.RuntimeMethodHandle.InvokeConstructor(IRuntimeMethodInfo
method, Object[] args, SignatureStruct signature, RuntimeType
declaringType)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags
invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr,
Binder binder, Object[] args, CultureInfo culture, Object[]
activationAttributes)
at System.Activator.CreateInstance(Type type, BindingFlags
bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[]
activationAttributes)
at System.Activator.CreateInstance(Type type, Object[] args)
at Castle.DynamicProxy.ProxyGenerator.CreateClassProxyInstance(Type
proxyType, List`1 proxyArguments, Type classToProxy, Object[]
constructorArguments)
at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type
classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions
options, Object[] constructorArguments, IInterceptor[] interceptors)
at
Castle.Facilities.WcfIntegration.Async.AsynChannelFactoryBuilder`1.Creat
eChannelFactory(Type channelFactoryType, M clientModel, Object[]
constructorArgs) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\Client\Async\AsyncChannelFactoryBuilder.cs:line 52
at
Castle.Facilities.WcfIntegration.AbstractChannelBuilder`1.CreateChannelC
reator(Type contract, M clientModel, Object[] channelFactoryArgs) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\Client\AbstractChannelBuilder.Generic.cs:line 134
at
Castle.Facilities.WcfIntegration.AbstractChannelBuilder`1.GetChannel(M
clientModel, Type contract, String configurationName) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\Client\AbstractChannelBuilder.Generic.cs:line 114
at
Castle.Facilities.WcfIntegration.AbstractChannelBuilder`1.GetChannel(Typ
e contract, String configurationName) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\Client\AbstractChannelBuilder.Generic.cs:line 85
at
Castle.Facilities.WcfIntegration.AbstractChannelBuilder.Castle.Facilitie
s.WcfIntegration.IWcfEndpointVisitor.VisitConfigurationEndpoint(Configur
ationEndpointModel model) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\Client\AbstractChannelBuilder.cs:line 92
at
Castle.Facilities.WcfIntegration.ConfigurationEndpointModel.Accept(IWcfE
ndpointVisitor visitor) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\WcfEndpoint.cs:line 271
at
Castle.Facilities.WcfIntegration.WcfEndpointBase.Castle.Facilities.WcfIn
tegration.IWcfEndpoint.Accept(IWcfEndpointVisitor visitor) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\WcfEndpoint.cs:line 103
at
Castle.Facilities.WcfIntegration.AbstractChannelBuilder.GetEndpointChann
elCreator(IWcfEndpoint endpoint, Type contract) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\Client\AbstractChannelBuilder.cs:line 68
at
Castle.Facilities.WcfIntegration.AbstractChannelBuilder`1.GetChannelCrea
tor(M clientModel, Type contract, IWcfBurden& burden) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\Client\AbstractChannelBuilder.Generic.cs:line 63
at
Castle.Facilities.WcfIntegration.WcfClientActivator.CreateChannelCreator
Internal[M](IKernel kernel, IWcfClientModel clientModel, ComponentModel
model, IWcfBurden& burden) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\Client\WcfClientActivator.cs:line 234
at
Castle.Facilities.WcfIntegration.WcfClientActivator.CreateChannelCreator
(IKernel kernel, ComponentModel model, IWcfClientModel clientModel,
IWcfBurden& burden) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\Client\WcfClientActivator.cs:line 226
at
Castle.Facilities.WcfIntegration.WcfClientActivator.GetChannelCreator(Cr
eationContext context, IWcfBurden& burden) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\Client\WcfClientActivator.cs:line 126
at
Castle.Facilities.WcfIntegration.WcfClientActivator.Instantiate(Creation
Context context) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\Client\WcfClientActivator.cs:line 76
at
Castle.Facilities.WcfIntegration.WcfClientActivator.InternalCreate(Creat
ionContext context) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\Client\WcfClientActivator.cs:line 68
at
Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(
CreationContext context)
at
Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationCo
ntext context)
at
Castle.MicroKernel.Lifestyle.SingletonLifestyleManager.Resolve(CreationC
ontext context)
at
Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext
context, Boolean track)
at
Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext
context)
at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler
handler, Type service, IDictionary additionalArguments)
at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler
handler, Type service)
at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler
handler)
at Castle.MicroKernel.DefaultKernel.get_Item(String key)
at
Castle.Facilities.WcfIntegration.WindsorInstanceProvider.GetInstance(Ins
tanceContext instanceContext, Message message) in
c:\temp\Code\Castle\Castle.Facilities.Wcf\src\Castle.Facilities.WcfInteg
ration\Service\WindsorInstanceProvider.cs:line 74
at
System.ServiceModel.Dispatcher.InstanceBehavior.GetInstance(InstanceCont
ext instanceContext, Message request)
at System.ServiceModel.InstanceContext.GetServiceInstance(Message
message)
at
System.ServiceModel.Dispatcher.InstanceBehavior.EnsureServiceInstance(Me
ssageRpc& rpc)
at
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41
(MessageRpc& rpc)
at
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(
MessageRpc& rpc)
at
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31
(MessageRpc& rpc)
at
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(
MessageRpc& rpc)
at
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(
MessageRpc& rpc)
at
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11
(MessageRpc& rpc)
at
System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(
MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean
isOperationContextSet)}
Any ideas?
Adam Langley
--
You received this message because you are subscribed to the Google Groups
"Castle Project Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/castle-project-users?hl=en.