Autor Thema: Dienst kann nur auf Notes zugreifen solang Benutzer am Rechner angemeldet ist  (Gelesen 1361 mal)

Offline ManuelF

  • Frischling
  • *
  • Beiträge: 3
Hallo zusammen,

Ich habe folgende Situation und Problem:

Auf einem Windows Server 2003 - 32 Bit läuft unser Windows Dienst der regelmäßig Kontakte mit Lotus Notes / Domino synchronisiert. Der Domino Server 8.x selbst läuft wiederum auf einem anderen Rechner. Auf dem Windows Server 2003 ist Lotus Notes Client 8.5.2 installiert.

Der Dienst läuft unter dem Windows-Account A (mit Administrationsberechtigung) Unter diesem Account ist Lotus Notes eingerichtet mit dem Notes Benutzer N. Der Notes Benutzer N hat Zugriff auf die names.nsf am Domino-Server.

Wenn ich mich Remote mit dem Benutzer A auf dem Windows Server anmelde, den Dienst starte, funktioniert alles so wie es soll und der Dienst kann die Daten aus der names.nsf abrufen. Sobald ich mich mich vom Windows Server abmelde, läuft der Dienst ohne Probleme weiter, aber die Verbindung zum Domino Server bricht ab und kann erst durch einen Dienst-Neustart wieder behoben werden.

Eine Vermutung war, dass es problematisch ist, dass ich mich remote mit Benutzer A vom Windows Server abmelde und gleichzeitig der Dienst noch unter A weiterlaufen soll, deshalb hab ich folgendes versucht: Ich hab mich mit Benutzer B (ebenfalls Administratorrechte) am Server angemeldet und den Dienst neu gestartet und es hat wieder ohne Probleme funktioniert. Aber sobald ich mich wieder abmelde wird die Verbindung Dienst zu Domino Server wieder beendet.

Die Fehlermeldung lautet:
Der Server 'xyz' oder die Datenbank 'names.nsf' kann derzeit nicht erreicht werden.
Failed to open database with OpenWithFailover.

Dass heißt, nur wenn ich auf dem Server mit irgendeinem(!) Benutzer angemeldet bin, kann der Dienst auf Notes zugreifen. In einer komplett anderen Umgebung funktioniert dies, auch ohne, dass ein Benutzer angemeldet sein muss.

Für mich ist ein solches Verhalten leider komplett unerklärbar. ??? Hat von Euch jemand eine Idee oder gibt es in Notes/Domino irgendwelche Optionen die ein solches Verhalten verursachen könnten?

Bereits im Voraus vielen Dank für Antworten & Idee.

Manuel

« Letzte Änderung: 13.05.13 - 12:54:17 von ManuelF »

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Ohne Kenntnis des "Dienstes" kann man hier keinerlei Auskunft geben... Ist das eine eigene Exe? Was tut das Ding? Wie ist es implementiert? Welche Schnittstellen verwendet es?
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Pyewacket

  • Senior Mitglied
  • ****
  • Beiträge: 310
  • Geschlecht: Männlich
Soweit ich weiss muss für einen Service der das Notes-API verwendet die
Environmentvaribale NOTESNTSERVICE=1 gesetzt sein, damit das beschriebene Verhalten verhindert wird.
ATOS.org - Feel the music!

Offline ManuelF

  • Frischling
  • *
  • Beiträge: 3
Hallo,

vielen Dank für eure schnelle Antwort

@Tode: Es handelt sich hierbei um einen 32 Bit .Net 3.5 Windows Service (.exe). Der Service holt sich vom Domino Server aus der names.nsf alle Personennamen und speichert diese in einer lokalen Datenbank.

Der Zugriff auf die Notes API erfolgt über COM mit ungefähr folgendem Code:

var session = new NotesSession();
session.Initialize(password);

NotesDatabase res = null;
var res = session.GetDatabase(servername, databasename, false);

if (res == null)
{
   res = session.GetDatabase(servername, databasename, true);
        try
        {
           bool isSuccess = false;
                if (!res.IsOpen)
                   isSuccess = res.OpenWithFailover(servername, databasename);
                else
                        isSuccess = true; // ist schon offen!

                if (!isSuccess)
                {
                     ... // Fehler ausgeben
                }
   }
   catch (Exception ex)
   {
                     ... // Fehler ausgeben
        }
}

@Pyewacket:
Danke für diesen Tipp, das hört sich vielversprechend an. Werde dies ausprobieren sobald ich wieder Zugriff auf die Umgebung habe

Offline ManuelF

  • Frischling
  • *
  • Beiträge: 3
Der Tipp mit der Environmentvariable NOTESNTSERVICE=1 scheint die Lösung gewesen zu sein. Jetzt funktioniert es.

Vielen Dank für eure Hilfe!  :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz