OPC Studio User's Guide and Reference
AlternateHostNames Property (EasyUAServerCore)
Example 



OpcLabs.ServerOpcUA Assembly > OpcLabs.EasyOpc.UA Namespace > EasyUAServerCore Class : AlternateHostNames Property
A collection of host names for the application instance.
Syntax
'Declaration
 
<IgnoreDataMemberAttribute()>
<XmlIgnoreAttribute()>
Public ReadOnly Property AlternateHostNames As StringCollection
'Usage
 
Dim instance As EasyUAServerCore
Dim value As StringCollection
 
value = instance.AlternateHostNames
[IgnoreDataMember()]
[XmlIgnore()]
public StringCollection AlternateHostNames {get;}
[IgnoreDataMember()]
[XmlIgnore()]
public:
property StringCollection^ AlternateHostNames {
   StringCollection^ get();
}

Property Value

A collection of strings, each representing an alternate host name for the application instance.

The value of this property cannot be null (Nothing in Visual Basic).

The individual elements of the property value cannot be null (Nothing in Visual Basic).

Remarks

This collection can be accessed as a whole, in formatted string form, using the AlternateHostNamesString property.

This method or property does not throw any exceptions, aside from execution exceptions such as System.Threading.ThreadAbortException or System.OutOfMemoryException.

This property can be used to specify host names that clients should be able to use when addressing the server, and that are not contained explicitly in any server endpoint URL. The host names from this property are merged with host names from the application level (either OpcLabs.EasyOpc.UA.Engine.UAClientServerApplicationParameters.HostNames, or the default host names if OpcLabs.EasyOpc.UA.Engine.UAClientServerApplicationParameters.HostNames is empty).

The resulting (effective) host names are stored into the server application certificate, when the OPC UA server component creates its own application certificate automatically. If your application contains multiple servers sharing the same host names, it is recommended that you keep this property empty, and rather set the host names on the application level.

From UA-.NETStandard comments: "These list the alternate host names (via firewalls, multiple NICs etc.) that can be used to communicate with the server. The URL used by the client when calling FindServers/GetEndpoints or CreateSession will be used to filter the list of endpoints returned by checking for alternate host names that match the domain in the URL provided by the client.
Note that any additional domains should be listed in the server's certificate. If they are left out the client make refuse to connect because it has no way to know if the alternate domain was authorized by the server administrator."

From OPC UA specification: "Servers shall specify a partial or a fully qualified dNSName or a static IPAddress which identifies the machine where the application Instance runs. Additional dNSNames may be specified if the machine has multiple names."

Example
// This example shows how to specify additional host name(s) for the server. This is useful when the server is running on a 
// computer that has multiple host names, and you want to make the server accessible under them.
// You can use any OPC UA client, including our Connectivity Explorer and OpcCmd utility, to connect to the server. 
//
// Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
// OPC client, server and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-OPCStudio-CSharp .
// Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
// a commercial license in order to use Online Forums, and we reply to every post.

using System;
using OpcLabs.EasyOpc.UA;
using OpcLabs.EasyOpc.UA.Application;
using OpcLabs.EasyOpc.UA.Application.Extensions;
using OpcLabs.EasyOpc.UA.NodeSpace;
using OpcLabs.EasyOpc.UA.OperationModel;

namespace UAServerDocExamples._EasyUAServer
{
    class AlternateHostNames
    {
        public static void Main1()
        {
            // Obtain the application interface.
            EasyUAApplication application = EasyUAApplication.Instance;

            // Remove the own application certificate. This assures that, when needed, the server will create a new one with
            // the parameters we want and specify.
            try
            {
                Console.WriteLine("Removing the own application certificate...");
                application.RemoveOwnCertificate();
                Console.WriteLine("The application certificate has been removed.");
            }
            catch (UAException uaException)
            {
                Console.WriteLine("*** Failure: {0}", uaException.GetBaseException().Message);
            }

            // Instantiate the server object.
            // By default, the server will run on endpoint URL "opc.tcp://localhost:48040/".
            var server = new EasyUAServer();

            // Add an alternate host name to the server (and its application certificate).
            server.AlternateHostNames.Add("mycomputer.mycompany.example");

            //
            
            // Define a data variable providing random integers.
            var random = new Random();
            server.Add(new UADataVariable("MyDataVariable").ReadValueFunction(() => random.Next()));

            // Start the server.
            Console.WriteLine("The server is starting...");
            server.Start();

            Console.WriteLine("The server is started.");
            Console.WriteLine();

            // Let the user decide when to stop.
            Console.WriteLine("Press Enter to stop the server...");
            Console.ReadLine();

            // Stop the server.
            Console.WriteLine("The server is stopping...");
            server.Stop();

            Console.WriteLine("The server is stopped.");
        }
    }
}
' This example shows how to specify additional host name(s) for the server. This is useful when the server is running on a 
' computer that has multiple host names, and you want to make the server accessible under them.
' You can use any OPC UA client, including our Connectivity Explorer and OpcCmd utility, to connect to the server. 
'
' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
' OPC client and subscriber examples in VB.NET on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBNET .
' Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
' a commercial license in order to use Online Forums, and we reply to every post.

Imports System
Imports OpcLabs.EasyOpc.UA
Imports OpcLabs.EasyOpc.UA.Application
Imports OpcLabs.EasyOpc.UA.Application.Extensions
Imports OpcLabs.EasyOpc.UA.NodeSpace
Imports OpcLabs.EasyOpc.UA.OperationModel

Namespace _EasyUAServer
    Partial Friend Class AlternateHostNames
        Shared Sub Main1()
            ' Obtain the application interface.
            Dim Application As EasyUAApplication = EasyUAApplication.Instance

            ' Remove the own application certificate. This assures that, when needed, the server will create a new one with
            ' the parameters we want and specify.
            Try
                Console.WriteLine("Removing the own application certificate...")
                Application.RemoveOwnCertificate()
                Console.WriteLine("The application certificate has been removed.")
            Catch uaException As UAException
                Console.WriteLine("*** Failure: {0}", uaException.GetBaseException().Message)
            End Try

            ' Instantiate the server object.
            ' By default, the server will run on endpoint URL "opc.tcp://localhost:48040/".
            Dim server = New EasyUAServer()

            ' Add an alternate host name to the server (and its application certificate).
            server.AlternateHostNames.Add("mycomputer.mycompany.example")

            '

            ' Define a data variable providing random integers.
            Dim random = New Random()
            server.Add(New UADataVariable("MyDataVariable").ReadValueFunction(Function() random.Next()))

            ' Start the server.
            Console.WriteLine("The server is starting...")
            server.Start()

            Console.WriteLine("The server is started.")
            Console.WriteLine()

            ' Let the user decide when to stop.
            Console.WriteLine("Press Enter to stop the server...")
            Console.ReadLine()

            ' Stop the server.
            Console.WriteLine("The server is stopping...")
            server.Stop()

            Console.WriteLine("The server is stopped.")
        End Sub
    End Class
End Namespace
Requirements

Target Platforms: .NET Framework: Windows 10 (selected versions), Windows 11 (selected versions), Windows Server 2016, Windows Server 2022; .NET: Linux, macOS, Microsoft Windows

See Also