wcfcredentialschannelfactory

ChannelFactory Credentials + object is read only


Greetings, what is the problem that when I try to set credentials for my factory as follows:

ChannelFactory<IWCFSeekService> factory = Factory;
if (factory != null)
{
    factory.Credentials.UserName.UserName = CServiceCredentials.Instance.Username;
    _Channel = factory.CreateChannel();
}

I get an exception that object is read-only. It occurs when I want to set username.


Solution

  • Yes, the MSDN documentation is pretty clear:

    C#
    public ClientCredentials Credentials { get; }
    

    The property only has a get accessor - no set accessor --> it's readonly.

    Also in the MSDN docs:

    Remarks
    The ClientCredentials object is stored as a type of endpoint behavior and can be accessed through the Behaviors property.

    The OnOpened method initializes a read-only copy of the ClientCredentials object for the factory.

    So what is it you're doing to do here??

    UPDATE: you cannot set the user credentials that your client proxy is supposed to use on the channel factory. See this excellent blog post on how to do it anyway - with a bit of a detour:

    Seems a bit odd and complicated, but that seems to be the one and only way to achieve this!