[gelöst]Remote Zugriff Message Queue Server via NAS

29. Oktober 2009 16:08

Hallo,

ich würde gerne mit dem NAS-Server auf eine Message Queue ausserhalb einer Domäne zugreifen.

Auf dem Computer außerhalb der Domäne habe ich eine private Message Queue erstellt.
Ich habe sämtliche Paramter für die Funktion OpenReplyQueue des 'Navision MS-Message Queue Bus Adapter" ausprobiert.

Beispiel:
OpenReplyQueue('FormatName:DIRECT=TCP:192.186.0.20\private$\navout',0,0);

Kann mir vielleicht jemand helfen? Kann es sein, dass der MQ-Adapter von Navision diese Funktion garnicht unterstüzt?

Vielen Dank für eure Hilfe.

Gruß Marco

PS: Der Zugriff via C# funktioniert problemlos.
Zuletzt geändert von Wumme am 24. November 2009 12:07, insgesamt 2-mal geändert.

Re: Remote Zugriff Message Queue Server via NAS

29. Oktober 2009 16:58

Helfen kann ich nur indirekt:
Mit diesem Suchbegiff Navision MS-Message Queue Bus Adapter MSMQBusAdapter finde ich reichlich treffer zum Thema.

Wenn ich das richtig quergelesen haben muss noch die Automation "'Navision Communication Component version 2'.CommunicationComponent" hinzugefügt werden (mag mich auch irren).
Siehe hier: Talking with Navision: Say Hello to Navision and Expect Navision to Be Polite

Ansonsten habe ich diese Teffer gefunden:
nav Developer´s Blog - Comcom and the Bus adapter
Dynamics user group - data exchange with Navision via MSMQ
Dynamicsuser - More Message Queues

Vieleicht kommst du damit ein wenig weiter?

Re: Remote Zugriff Message Queue Server via NAS

29. Oktober 2009 17:27

Hallo Mikka,

erst mal vielen Dank für deine Antwort.
Also Code-technisch hab ich alle Componenten hinzugefügt. Auf einem lokalen Server funktioniert ja alles.
Nur halt nicht, wenn der Server ausserhalb der Domäne steht.
Die Links kenne ich schon alle und hab auch alle genau durchgelesen. Leider konnten ich dort auch keine Lösung finden.

Gruß Marco

Re: Remote Zugriff Message Queue Server via NAS

29. Oktober 2009 17:37

ich hab zwar ehrlichgesagt keine Ahnung von dieser Programmierung, aber könnte mir vorstellen dass es an der Authentifizierung scheitert, scheinbar greifst du ja auf eine Windows-Freigabe (192.186.0.20\private$\navout) zu.
Daher könntest du versuchen (falls das in deinem Programm nicht möglich ist) die Authentifizierung für den Rechner in Windows selbst zu hinterlegen, und zwar (in XP) über Systemsteuerung -> Benutzerkonten -> Erweitert -> Kennwörter verwalten. Hier müsstest du dann ein auf dem anderen Rechner existierendes und mit den entsprechenden NAV Rechten versehenes Benutzerkonto angeben.

HTH
Gruss
Christian

Re: Remote Zugriff Message Queue Server via NAS

29. Oktober 2009 18:25

Also ich würde hier ein Rechte-Problem vermuten. Dein C#-Programm läuft doch bestimmt unter einem anderen (vermutlich Admin-) Account als der NAS. Außerdem verwendest Du eine Private-Queue und keine Public. Warum?

Re: Remote Zugriff Message Queue Server via NAS

30. Oktober 2009 09:08

vsnase hat geschrieben:Also ich würde hier ein Rechte-Problem vermuten. Dein C#-Programm läuft doch bestimmt unter einem anderen (vermutlich Admin-) Account als der NAS. Außerdem verwendest Du eine Private-Queue und keine Public. Warum?


Nas und C# Programm werden vom gleichen Account aufgerufen. Ich habe nun Private und Public-Queue getestet. Ohne Erfolg.
Zusätzlich habe ich den Zugriff via IP-Adresse innerhalb der Domäne ausprobiert. Wenn ich den Servernamen angebe, funktioniert der Zugriff auf die MSQ. Gebe ich die IP-Adresse an, dann funktioniert der Zugriff nicht.

Re: Remote Zugriff Message Queue Server via NAS

30. Oktober 2009 09:27

Wumme hat geschrieben:Zusätzlich habe ich den Zugriff via IP-Adresse innerhalb der Domäne ausprobiert. Wenn ich den Servernamen angebe, funktioniert der Zugriff auf die MSQ. Gebe ich die IP-Adresse an, dann funktioniert der Zugriff nicht.


Dann würde ich auf ein DNS bzw. AD-Problem schließen. Kann denn die IP-Adresse in den Namen aufgelöst werden? Auch in die GUID des Servers? Vertraut die Zieldomain der Herkunftsdomain? Ich hatte da mal irgendein Toll um das alles zu testen, weiß aber nicht mehr wo. In irgendeiner Win-ServerNewsgroup findet sich da aber bestimmt ein Hinweis.

Volker

Re: Remote Zugriff Message Queue Server via NAS

30. Oktober 2009 10:14

DNS und Vertrauenstellungen funktionieren perfekt. Namensauflösung funktioniert auch.

Remote Zugriff Message Queue Server via NAS

24. November 2009 12:06

Lösung:
Der 2. Parameter beim OpenreplyQueue steuert den Zugriff via Name oder IP.
OpenReplyQueue('192.186.0.20\private$\navout',1,0); --> über IP
OpenReplyQueue('SERVER\private$\navout',0,0); --> über DNS-Name

Beim OpenReceiveQueue gilt das gleiche.

Gruß Marco

Re: Remote Zugriff Message Queue Server via NAS

15. Juli 2011 12:24

Hallo zusammen,

auch wenn der Eintrag bereits etwas "älter" ist, versuche ich nochmal mein Glück, vllt kann mir ja jemand diesbezüglich helfen. Wir haben eine ganz ähnliche Lösung aufgebaut, doch bisher "nur" als Reaktion von Dynamics NAV auf eine Message in einer Queue, in der dann über den NAS eine Antwort eingestellt wird. Nun soll vom System bei verschiedenen Triggern ein XML in die Queue gestellt werden. Dies funktioniert auf dem Server, auf dem die Queue eingerichtet ist, auch einwandfrei, aber von einem lokalen Rechner bekommen wir immer die folgende Fehlermeldung:

---------------------------
Microsoft Dynamics NAV
---------------------------
Diese Meldung ist für C/AL Programmierer:

In Methode OpenWriteQueue wurde eine Ausnahme hervorgerufen. Das OLE Control oder der Automation Server gaben folgende Fehlermeldung zurück (HRESULT) -2147352567.
Die Komponente verfügt über keine Ausnahmebeschreibung.

---------------------------
OK
---------------------------


Wir haben jetzt die verschiedensten Varianten zur Adressierung der Queue versucht, aber irgendwie erfolglos. Wir sind dabei auch schon von privaten auf öffentliche Queues gewechselt, aber vom Server läuft es immer durch und der Client schmeißt einen Fehler. Folgende Versionen sind leider gescheitert:

für private Queues:
MQBus.OpenWriteQueue('interne IP-Adresse\private$\queuename',1,0);
MQBus.OpenWriteQueue('Servername\private$\queuename',0,0);

für öffentliche Queues:
MQBus.OpenWriteQueue('interne IP-Adresse\queuename',1,0);
MQBus.OpenWriteQueue('Servername\queuename',0,0);


Ich habe mich jetzt mal durchs Internet gekämpft und da funktioniert es ja in den unterschiedlichsten Konstellationen. Leider waren alle darin enthaltenen Tricks und Tipps für uns nicht zutreffend. Ich schätze es wird irgendeine Kleinigkeit sein, aber ich komme hier grad nicht weiter und wäre für eure Hilfe sehr dankbar.

Viele Grüße
Nicole