I am having difficulty provisioning a queue from a C# client application. The Solace Broker is running within a Docker container and the client application is running on the Docker host machine. This error is always thrown:
“Endpoint provisioning not allowed or not supported on session”
My understanding is that this happens because the Client Username that I am using to create a session with is based upon a client profile that does not have permission to create endpoints. I have checked this and it seems that the client profile does have the necessary permission so I am unclear as to why this error still occurs.
My client connects and the connection can be seen on the PubSub site. The Client Username that I am using to create a session with and connect is called ‘EnableAllClient’. This username is based upon a client profile called ‘EnableAll’.
The ‘EnableAll’ client profile has all settings set to true (including the ‘Allow client to create endpoints’ setting).
I used the following command to create the Docker container that is being used for Solace:
You can see in the screenshot that my test client tried to authenticate with ‘test’ client-username, but is connected on ‘default’ - this is because ‘test’ client-username does not exist. As this is not the expected client-username, it might have different client-profile settings associated with it which may not allow you to create an endpoint.
Another place to check is the protocol specified for your hostname/IP in your application; either TCP, or nothing which defaults to TCP (eg. “tcp://localhost”, “tcps://localhost” or “localhost”). If anything else is specified as the protocol (for example, http(s)), you could be seeing the “Endpoint provisioning not allowed or not supported on session” error.
Hi
Thanks for the replies. I am using the nuget package ‘SolaceSystems.Solclient.Messaging (10.9.0)’. The connection details used to connect to the broker are:
Secure Web Messaging Host: ws://localhost:8008
VPNName: default
I have not listed the values of the username and password here but I can confirm I am setting them correctly.
On PubSub+ Manager, I can see the client-username under the client connection properties tab. The value is ‘EnableAllClient’ which is what I would expect. The authenticated client-username is also ‘EnableAllClient’.
I have looked in event.log but cannot see anything regarding an endpoint provisioning not being allowed.
Maybe the issue relates to the choice of protocol for the host. I will experiment with that.
Are you saying that you’re using the C# .NET Solace API, and all you did was change the port from 8008 (websockets) to 55555 (standard SMF) and it just worked?? No other changes?
Yes thats right. I literally changed from ws to tcp (including a change in port) using the C# .NET Solace API, and then it started working. I don’t know why it didn’t work previously.
Hi Dan,
Upon further investigation, it is possible to use a WebSockets connection and do guaranteed messaging. To do this, you would need to enable the session property ‘guaranteed delivery with web transport’ in your application (.NET API version 10.9.0 or above is required). sessionProps.GdWithWebTransport = true