Interner Fehler 33 in Modul 35

7. Juli 2007 01:22

Nach dem Umzug einer Datenbank in ein neues Netzwerk sehe ich mich mit folgendem Phänomen konfrontiert:

Über die MSMQ wird für einen Schnittstellenimport ein XML-File erzeugt und eingelesen, der dann über den Automation Server "'Microsoft XML, v4.0'.DOMDocument40" mit dem Befehl "InDOM.load(Filename)" importiert und später ausgewertet werden soll. Der Automatismus der Einlesung wird über einen NAS gesteuert. Auf dem alten Server (3.70B) funktionierte dies alles wunderbar.

Nach dem Umzug (Server 4.03) habe ich dann folgendes Rätsel vom System bekommen: Über den üblichen Dienst fällt der NAS an dieser Stelle mit der Fehlermeldung "Interner Fehler 33 in Modul 35" auf die Nase. Melde ich mich in Navision mit dem gleichen Windows-User (Domänen-Admin) an und starte den NAS-Handler in der C1 mit den gleichen Parametern manuell über eine Form an, arbeitet die Schnittstelle völlig korrekt.

Die Umgebung des Komm-Servers scheint auf den ersten Blick mit Windows 2003 SP1, MSXML4.0SP2 und .NET1.1 die gleiche wie vorher zu sein. Was um alles in der Welt will mir das System nun mit diesem Fehler mitteilen und wo kann der Unterschied liegen, dass es per Dienst nicht funktioniert und manuell schon? Ich bin ratlos... :-(

7. Juli 2007 11:45

Klingt irgendwie nach einem Zugriffsproblem. Warst du beim Starten über die Form ebenfalls auf dem Server angemeldet oder an einer Workstation?

Welche Fehlermeldung bekommst du, wenn du statt InDOM.load(Filename) versuchst, die Datei per File und Stream zu öffnen?

12. Juli 2007 14:45

Beim Starten der Form war ich ebenfalls auf dem Server. Ein Zugriffsproblem hatte ich hierbei auch schon im Sinn, aber mir fällt kein weiterer Ansatz mehr ein, da scheinbar die vergebenen Rechte für den Windows-User ausreichen sollten.

Auf folgende Weise kommt dabei der File zustande bzw. wird schon mit ihm ohne Fehlermeldung gearbeitet. Erst eben beim letzten Schritt fällt er auf die Nase.

-----

CLEAR(InStreamObj);
CLEAR(FileOutStrm);
Filename := ENVIRON('TEMP') + '\'
Filename := Filename + FORMAT(CREATEGUID) + '.xml';
hlpFile.CREATE(Filename);
hlpFile.CREATEOUTSTREAM(FileOutStrm);
InStreamObj := InMsg.GetStream;
REPEAT
val := InStreamObj.READ(hlpText);
FileOutStrm.WRITETEXT(hlpText);
UNTIL val = 0;
hlpFile.CLOSE;
SynchLog."In-Stream Object".IMPORT(Filename,FALSE);
COMMIT;
InDOM.load(Filename)

....
--------------------