Automatische Portvergabe
Bei Kunden mit mehreren BO-Server-Instanzen auf einer Maschine (z. B. ...\Server,...\ServerInstanz2, ...\ServerInstanz3) muss jede Instanz eigene, eindeutige Ports haben:
- SignalRServerPort (Standard 11120) – für die Echtzeit-Verbindung Client ↔ Server.
- FusionApiServerPort (Standard 8321) – für die Fusion-/REST-Schnittstelle.
Hatten zwei Instanzen denselben Port, scheiterte der Start der zweiten Instanz
(„Port bereits belegt"). Sichtbare Folge beim Kunden: WERBAS-Start dauert ~2 Minuten und
endet mit einer SignalR-Verbindungs-Fehlermeldung.
Bisher wurde beim Setup nur der klassische Server-Port automatisch hochgezählt – die beiden
oben genannten Ports nicht. Das wird mit dieser Änderung behoben.
Was ändert sich beim Update?
Der Installer führt ab sofort bei jeder Neuinstallation und bei jedem Update eine
automatische Prüfung durch: Er geht alle Server-Instanzen in der ConnectConfig.xml
durch und stellt sicher, dass SignalRServerPort und FusionApiServerPort je Instanz
eindeutig sind.
- Es ist kein manueller Eingriff nötig. Die Ports werden automatisch gesetzt/korrigiert.
- Es wird nichts kaputt gemacht: Bereits korrekte, eindeutige Werte bleiben unverändert.
- Jede Aktion wird ins Setup-Log geschrieben (nachvollziehbar für den Service).
Die ConnectConfig.xml liegt unter:%ProgramData%\WERBAS\Werbas.Web\Config\ConnectConfig.xml
Wie wird die Eindeutigkeit garantiert? (die Regeln)
Pro Port-Art (SignalR bzw. FusionApi) getrennt und in Reihenfolge der Server-Instanzen:
-
Port fehlt → wird angelegt.
Erste Instanz bekommt den Standardwert, jede weitere den nächsten freien Wert. -
Port ist doppelt → die betroffene Instanz bekommt den nächsten global freien Wert
(höchster bereits vergebener Wert dieser Port-Art + 1). - Port ist bereits eindeutig → bleibt unverändert (nur Erfolgsmeldung im Log).
Idempotent: Läuft das Update ein zweites Mal, ändert sich nichts mehr – es stehen dann
nur noch Erfolgsmeldungen im Log.
Beispiel
Kunde mit 3 Instanzen, vorher ohne die Port-Einträge:
| Instanz | SignalRServerPort | FusionApiServerPort |
|---|---|---|
| Server (1.) | 11120 | 8321 |
| ServerInstanz2 | 11121 | 8322 |
| ServerInstanz3 | 11122 | 8323 |
Waren z. B. versehentlich zwei Instanzen auf 11120 gesetzt, wird die zweite automatisch
auf den nächsten freien Wert (11121 usw.) korrigiert.
Was steht im Setup-Log?
Das Setup-Log liegt unter:C:\ProgramData\WERBAS\Werbas.Web\Log\WerbasWebInstaller.txt
Beispiele für Log-Einträge (Stichwort CheckAndFixServerPorts):
Node 'FusionApiServerPort' fuer Server '...\ServerInstanz2' fehlte und wurde mit Wert '8322' angelegt.Node 'SignalRServerPort' fuer Server '...\ServerInstanz3' von '11120' auf eindeutigen Wert '11122' korrigiert.Alle Server-Ports (SignalRServerPort/FusionApiServerPort) sind eindeutig - keine Aenderung noetig.
→ Der Service kann im Setup-Log direkt sehen, ob und was angepasst wurde.
Was ist nicht betroffen?
- Das bisherige Verhalten der übrigen Ports (u. a. der Remoting-/Server-Port) bleibt
unverändert. - Kunden mit nur einer Server-Instanz merken nichts – ihre Ports bleiben auf den
Standardwerten. - Es findet kein Selbst-Heilen im laufenden Betrieb statt; die Prüfung läuft ausschließlich
im Rahmen von Installation/Update.
Was sollte im Problemfall geprüft werden?
- Nach dem Update: Bei Port-Problemen mit mehreren Instanzen zuerst das Setup-Log
C:\ProgramData\WERBAS\Werbas.Web\Log\WerbasWebInstaller.txtprüfen
(Einträge mitCheckAndFixServerPorts). - Die Ports müssen nicht mehr von Hand in der
ConnectConfig.xmlgepflegt werden. - Bei Bedarf lassen sich die zugewiesenen Werte in der
ConnectConfig.xmlje Server-Block
nachvollziehen (SignalRServerPort,FusionApiServerPort).