# Lizenz einrichten

> Anleitung: Die Lizenz in einer Client- oder Serveranwendung einrichten: Evaluation, Lizenzschlüssel eintragen, Lizenz abfragen und beim Start prüfen.

**Beispielanwendungen:**

- App.LicenseUsage ([C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/App.LicenseUsage), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/App.LicenseUsage)): Setzt die Lizenzschlüssel des SDK und schützt sie bei der Obfuskation der Anwendung durch Verschlüsselung der Zeichenketten, hier mit Eazfuscator.NET.

So richten Sie die Lizenz des OPC UA .NET SDK in Ihrer Client- oder Serveranwendung ein. Welche Lizenzmodelle und SDK-Varianten es gibt und wie Sie mit dem Lizenzschlüssel umgehen, beschreibt die Seite [Lizenzen](https://www.traeger.de/docs/development/opcua/license).

Beteiligte Typen: `Opc.UaFx.Licenser`, `Opc.UaFx.Client.Licenser`, `Opc.UaFx.Server.Licenser`, `ILicenseInfo`

## Evaluation

Ohne Lizenzschlüssel können Sie das SDK kostenlos und unbegrenzt evaluieren: Die Testlizenz läuft **30 Minuten je Anwendungsstart**, in dieser Zeit steht das SDK uneingeschränkt für die Client- und Serverentwicklung zur Verfügung. Wenn Ihnen 30 Minuten je Anwendungsstart nicht reichen, können Sie bei uns eine verlängerte Evaluation beantragen. Wenden Sie sich dazu an unseren Support unter [support@traeger.de](mailto:support@traeger.de). Gerne berät Sie auch unser Entwicklungsteam direkt und klärt offene Fragen.

## Lizenzschlüssel eintragen

Wenn Sie Ihren personalisierten Lizenzschlüssel erhalten haben, tragen Sie ihn im SDK ein. Welche Klasse den Schlüssel entgegennimmt, hängt von der SDK-Variante ab:

| Lizenz | Klasse | Eintragen vor dem ersten Zugriff auf |
|---|---|---|
| Client-Lizenz | `Opc.UaFx.Client.Licenser` | `OpcClient` |
| Server-Lizenz | `Opc.UaFx.Server.Licenser` | `OpcServer` |
| Bundle-Lizenz (Client und Server) | `Opc.UaFx.Licenser` | `OpcClient` oder `OpcServer` |

Fügen Sie die passende Codezeile in Ihre Anwendung ein, **bevor** Sie das erste Mal auf die Klasse `OpcClient` beziehungsweise `OpcServer` zugreifen. Ersetzen Sie dabei `<insert your license code here>` durch den Lizenzschlüssel, den Sie von uns erhalten haben.

### Client-Lizenz

```csharp
Opc.UaFx.Client.Licenser.LicenseKey = "<insert your license code here>";

```

```vbnet
Opc.UaFx.Client.Licenser.LicenseKey = "<insert your license code here>"

```

### Server-Lizenz

```csharp
Opc.UaFx.Server.Licenser.LicenseKey = "<insert your license code here>";

```

```vbnet
Opc.UaFx.Server.Licenser.LicenseKey = "<insert your license code here>"

```

### Bundle-Lizenz

Wenn Sie bei uns einen Bundle-Lizenzschlüssel für die Client- und Serverentwicklung erworben haben, tragen Sie ihn so ein:

```csharp
Opc.UaFx.Licenser.LicenseKey = "<insert your license code here>";

```

```vbnet
Opc.UaFx.Licenser.LicenseKey = "<insert your license code here>"

```

Ein einmal festgelegter **Bundle-Lizenzschlüssel hat Vorrang** vor dem Client- beziehungsweise Server-Lizenzschlüssel. Wenn ein Bundle-Lizenzschlüssel festgelegt ist, prüft das SDK die Lizenz ausschließlich anhand dieses Schlüssels. Ein zusätzlich festgelegter Client- oder Server-Lizenzschlüssel bleibt dann unberücksichtigt.

## Verwendete Lizenz abfragen

Informationen über die Lizenz, die das SDK aktuell verwendet, liefert die Eigenschaft `LicenseInfo`. Für Client-Lizenzen fragen Sie sie über die Klasse `Opc.UaFx.Client.Licenser` ab, für Server-Lizenzen über die Klasse `Opc.UaFx.Server.Licenser` und für Bundle-Lizenzen über die Klasse `Opc.UaFx.Licenser`. So fragen Sie die Lizenz ab:

```csharp
ILicenseInfo license = Opc.UaFx.Client.Licenser.LicenseInfo;
 
if (license.IsExpired)
    Console.WriteLine("The OPC UA SDK license is expired!");

```

```csharp
ILicenseInfo license = Opc.UaFx.Server.Licenser.LicenseInfo;
 
if (license.IsExpired)
    Console.WriteLine("The OPC UA SDK license is expired!");

```

```vbnet
Dim license As ILicenseInfo = Opc.UaFx.Client.Licenser.LicenseInfo

If license.IsExpired Then
    Console.WriteLine("The OPC UA SDK license is expired!")
End If
```

```vbnet
Dim license As ILicenseInfo = Opc.UaFx.Server.Licenser.LicenseInfo

If license.IsExpired Then
    Console.WriteLine("The OPC UA SDK license is expired!")
End If
```

## Lizenz beim Start prüfen

Während der Entwicklung und Evaluation spielt es oft keine Rolle, ob das SDK noch als Evaluation oder bereits mit der erworbenen Lizenz läuft. Im produktiven Einsatz führt eine ungültige Lizenz dagegen dazu, dass die Anwendung während der Ausführung nicht mehr funktioniert. Wir empfehlen deshalb, den folgenden Codeausschnitt in die Anwendung einzubauen und ihn mindestens beim Start der Anwendung auszuführen. Die Methoden, deren Name mit `FailIf` beginnt, wirken nur in Debug-Builds (Symbol `DEBUG`). Die Methoden mit `ThrowIf` wirken in allen Builds. Neben `ThrowIfUnlicensed` stehen zudem `ThrowIfEvaluation`, `ThrowIfExpired` und `ThrowIfSupportExpired` zur Verfügung:

```csharp
#if DEBUG
    Opc.UaFx.Client.Licenser.FailIfUnlicensed();
#else
    Opc.UaFx.Client.Licenser.ThrowIfUnlicensed();
#endif

```

```csharp
#if DEBUG
    Opc.UaFx.Server.Licenser.FailIfUnlicensed();
#else
    Opc.UaFx.Server.Licenser.ThrowIfUnlicensed();
#endif

```

```vbnet
#If DEBUG Then
    Opc.UaFx.Client.Licenser.FailIfUnlicensed()
#Else
    Opc.UaFx.Client.Licenser.ThrowIfUnlicensed()
#End If

```

```vbnet
#If DEBUG Then
    Opc.UaFx.Server.Licenser.FailIfUnlicensed()
#Else
    Opc.UaFx.Server.Licenser.ThrowIfUnlicensed()
#End If

```

Weitere Informationen zur Lizenzierung, zum Erwerb und zu anderen Fragen finden Sie auf unserer Produktseite [OPC UA SDKs](https://www.traeger.de/products/development/opcua).
