You should be able to achieve the same thing by registering an
implementation of IChannelFactoryAware and doing your
channelFactory.Credentials.Windows.AllowedImpersonationLevel =
TokenImpersonationLevel.Impersonation;
channelFactory.Credentials.Windows.AllowNtlm = true;

in the Create method

On Mon, Jun 1, 2009 at 1:23 PM, Huseyin Tufekcilerli <[email protected]>wrote:

>
> I am trying to set the a ClientCredentials IEndpointBehavior on my WCF
> client (1) but when I try to resolve a proxy of contract type
> ICustomerService, I get the following exception:
>
> The value could not be added to the collection, as the collection
> already contains an item of the same type:
> 'System.ServiceModel.Description.ClientCredentials'. This collection
> only supports one instance of each type.
> Parameter name: item
>
> (obviously this behavior is a built-in one on ChannelFactory<T> and
> doesn't let me put another one)
>
> // CODE *****************************************
> var binding = new NetTcpBinding();
> binding.Security.Mode = SecurityMode.Transport;
> binding.Security.Transport.ClientCredentialType =
> TcpClientCredentialType.Windows;
>
> // (1) *****************************************
> var clientCredentials = new ClientCredentials();
> clientCredentials.Windows.AllowedImpersonationLevel =
> TokenImpersonationLevel.Impersonation;
> clientCredentials.Windows.AllowNtlm = true;
> // (1) *****************************************
>
> var address = new EndpointAddress(
> new Uri("net.tcp://host.domain.com:8182/Mind2Biz/
> CustomerService"),
> EndpointIdentity.CreateSpnIdentity("CustomerService/
> host.domain.com"));
>
> var clientModel = DefaultClientModel.On(WcfEndpoint
> .ForContract<ICustomerService>()
> .BoundTo(binding)
> .At(address));
>
> var container = new WindsorContainer()
> .AddFacility<WcfFacility>()
> .Register(
> // (1) *****************************************
> Component.For<ClientCredentials>().Instance
> (clientCredentials),
> // (1) *****************************************
> Component.For<ICustomerService>().ActAs
> (clientModel).LifeStyle.Transient
> );
>
> // (2) *****************************************
> var proxy = container.Resolve<ICustomerService>();
> // (2) *****************************************
>
>
> Normally, without Castle WCF Facility, I would set that already
> existing
> Credentials on channel factory like this:
>
> var channelFactory = new ChannelFactory<ICustomerService>(binding,
> endpointAddress);
> channelFactory.Credentials.Windows.AllowedImpersonationLevel =
> TokenImpersonationLevel.Impersonation;
> channelFactory.Credentials.Windows.AllowNtlm = true;
>
> How can I modify this existing ClientCredentials on my WCF Channel
> Factory using Castle WCF Facility? Thanks!
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to