Manual configuration of OPC UA Client Connections fails until gateway is rebooted

It’s not necessarily a discovery server, it’s just the discovery endpoint. In many servers they are the same URL, but in some (like Ignition’s) they can be different.

You do need to specify it. The discovery URL is the initial contact point. The client calls the GetEndpoints service against that URL and then follows whatever endpoint URL is returned in the selected endpoint. That’s the one that should match the endpoint URL setting.

The connection is always a two step process - call GetEndpoints against discovery URL, find an endpoint in the results that matches the rest of the configuration (endpoint URL, security policy, message security mode), then connect to that endpoint.

Is that procedure part of the OPC protocol (must all OPC clients do this) or is this just the way the Ignition client does it? I can understand browsing the discovery endpoint of a server if you want to know what endpoints are available and which policies and modes are available, but if that is already known it seems a bit redundant to involve the discovery endpoint at all. Why not just try to connect with the endpoint, mode and policy that is configured?

It’s how most do it, but it’s not required.

I think as far as the Ignition client is concerned it has to due with backwards compatibility in the OPC UA settings and some difficulty in what would be the ideal approach - just serializing all of the selected EndpointDescription information. At the OPC UA SDK level you need a full EndpointDescription object in order to connect and you can’t get this unless you go through discovery services (GetEndpoints) or can fully de-serialize one from storage, which would be difficult for us.

It’s also easier this way to allow someone to configure a server that isn’t currently online.

Understood. Thanks for taking the time to discuss the finer details.