Three Tier + Web Client

11. November 2013 09:22

Halo Leute,

bin neu hier und auch was die Installation von Navision betrifft noch recht neu. Wir haben aktuell eine Testumgebung mit folgender Konfiguration:

SQL01: Datenbank NAV_2013
TS01: Terminalserver mit nativem Client
NAV01: Mittelschicht Services für NAV_2013
NAVWEB01: Webservices (+ eigene Mittelschicht)

Jetzt habe ich das Problem, wenn ich mit den Web Service auf die bereits bestehende Mittelschicht zeigen lassen, wo sich auch der native Client hinverbindet, kann ich NUR vom NAVWEB01 aus den Webclient öffnen/starten. Habe ich, so wie es derzeit der Fall ist, zusätzlich eine eigenen Mittelschicht auf dem Server installiert, funktioniert der Aufruf des Webclient auch zB vom TS01 aus.

Habe ich hier irgendwas falsch gemach? Wieso kann ich die bereits vorhandene Mittelschicht nicht verwenden?

Code:
Type: Microsoft.Dynamics.Nav.Types.NavServerNotFoundException
Message: Unter 'net.tcp://nav01:7046/DynamicsNAV70/Service' wurde kein Server gefunden. Möglicherweise ist die URL falsch, oder der Server ist zurzeit nicht verfügbar.
StackTrace:
   at Microsoft.Dynamics.Nav.Client.ConnectionEstablisher.ConfirmOpenConnectionRetry(ConnectFailedEventArgs connectFailedArgs, Exception exception)
   at Microsoft.Dynamics.Nav.Client.ConnectionEstablisher.OpenConnection(ConnectFailedEventArgs connectFailedArgs, ConnectionRequest connectionRequest, SpnSetting spnSettingToTry, Boolean allowSpnSettingsSwap, UserSettings& userSettings)
   at Microsoft.Dynamics.Nav.Client.ConnectionEstablisher.OpenConnection(ConnectionRequest connectionRequest, UserSettings& userSettings)
   at Microsoft.Dynamics.Nav.Client.ServiceConnection.OpenConnection()
   at Microsoft.Dynamics.Nav.Client.ServiceConnection.Initialize()
   at Microsoft.Dynamics.Nav.Client.FormBuilder.BuilderSessionInitializer.OpenConnectionToServer()
   at Microsoft.Dynamics.Nav.Client.FormBuilder.BuilderSessionInitializer.InitializeCore()
   at Microsoft.Dynamics.Nav.Client.FormBuilder.BuilderSessionInitializer.Initialize()
   at Microsoft.Dynamics.Framework.UI.UISession.Initialize()
   at Microsoft.Dynamics.Nav.Client.Web.NavWebUISessionInitializer.InitializeCore(UISession session)
   at Microsoft.Dynamics.Nav.WebClient.NavWebClientUISessionInitializer.InitializeCore(UISession session)
   at Microsoft.Dynamics.Nav.Client.Web.NavWebUISessionInitializer.Initialize(UISession session)
   at Microsoft.Dynamics.Framework.UI.Web.ShownFormTrackingUISessionInitializer.InitializeSessionAndTrackShownInitializationForms(UISession session)
   at Microsoft.Dynamics.Framework.UI.Web.LogicalFormInitializer.InitializeSession(FormPropertyBag formBeingInitialized, ClientSession clientSession)
   at Microsoft.Dynamics.Framework.UI.Web.LogicalFormInitializer.<>c__DisplayClass1.<Create>b__0()
   at Microsoft.Dynamics.Framework.UI.LogicalOperationInvoker.InvokeAndHandleExceptions(Func`1 action, IExceptionHandler exceptionHandler)
Source: Microsoft.Dynamics.Nav.Client.ServiceConnection----------------------------------
Type: System.IO.IOException
Message: The read operation failed, see inner exception.
StackTrace:
   at System.Net.Security.NegotiateStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.NegotiateStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   at System.ServiceModel.Channels.StreamConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
Source: System----------------------------------
Type: System.ServiceModel.CommunicationException
Message: The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or an underlying network resource issue. Local socket timeout was '00:00:09.9400000'.
StackTrace:
   at System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
   at System.ServiceModel.Channels.SocketConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
   at System.ServiceModel.Channels.ConnectionStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
   at System.Net.Security.NegotiateStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.NegotiateStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.NegotiateStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
Source: System.ServiceModel----------------------------------
Type: System.Net.Sockets.SocketException
Message: An existing connection was forcibly closed by the remote host
StackTrace:
   at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   at System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
Source: System


Ich dachte, dass es an Server 2012 und IIS 8.0 liegt und habe kurzer Hand noch einen Server 2008 R2 installiert und darauf die Web Services. Aber brachte nix. Habe das gleiche Phänomen wie immer.
Wäre sehr dankbar, da wir diesen Web Client dringend in der Echtumgebung brauchen.

Vielen Dank im Voraus.


Lg, Michael

Edit:
Ich habe auch laut MSDN (http://msdn.microsoft.com/en-us/library ... 71%29.aspx) die Delegation eingerichtet. Aber funktioniert trotzdem nicht. Beim Öffnen von einem anderen Domain-Computer aus, kommt im Browser nach wie vor
Code:
Der Inhalt kann aufgrund eines Serverfehlers nicht angezeigt werden. Aktualisieren Sie die Seite, oder öffnen Sie ein neues Browserfenster.

und im Log des Web Services Server der oben angeführte Eintrag.

Re: Three Tier + Web Client

11. November 2013 13:43

Nach langem Suchen habe ich eine neue Erkenntnis:

Ich muss die Option "Kerberos only" deaktivieren und schon konnte sich der Web Service auf den bestehenden NAV Server verbinden. ABER: Es funktioniert nicht, wenn ich den NLB Cluster angebe. Ich muss dediziert in der web.conf den Server angeben, der auch in der Delegation eingegeben ist. Hat hier jemand erfahrung, wie ich das machen kann? Denn beim nativen Cient ist das kein Problem mit dem Cluster. Aber bei dem Web Client schon. Möchte ja die selbe Mittelschicht nutzen, wie für die normalen Benutzer auch...

Danke & Lg, Michael

Re: Three Tier + Web Client

13. November 2013 17:28

Kann mir da niemand helfen oder irgendwie eine Antwort geben?

Danke & Lg

Re: Three Tier + Web Client

13. November 2013 18:37

Ich habs 3 mal gelesen und nicht ganz verstanden.

Um was geht es hier? Webservices oder WebClient?

Re: Three Tier + Web Client

14. November 2013 10:44

Wir stellen einigen Benutzern Navision über HTTP zur Verfügung. Ich will, dass der Navision Webclient sich auch auf den bestehenden CLuster verbindet, wo die Navision 2013 Server Komponente installiert ist.

Re: Three Tier + Web Client

14. November 2013 12:02

Warum sollen die HTTP-User nicht NAV01 mitbenutzen?

Re: Three Tier + Web Client

14. November 2013 12:09

Sicher sollen Sie... Jedoch über die Cluster-IP.

NAV01 + NAV02 = NAVCLU01 (NLB)

Jedoch bei der Konfiguration muss ich direkt einen der beiden Nodes angeben, und nicht die Cluster-IP.

Re: Three Tier + Web Client

14. November 2013 12:34

Cluster kam erst ab Deinem zweiten Beitrag.
Können die Windows Clients auf beide Nodes via Cluster IP zugreifen?

Re: Three Tier + Web Client

14. November 2013 12:40

Ja, können sie. Wenn ich Navision 2013 auf dem TS01 starte ist die Cluster-IP hinterlegt und funktioniert. Jedoch nicht mit dem Webclient. Aufgrund der Delegierung kann ich nicht auf die Cluster-IP delegieren. Auch wenn ich die Delegierung auf dem NAVWEB01 für nAV01 und NAV02 einrichte funktioniert es nicht. Daher auch die Frage ob via Webclient überhaupt ein Zugriff über die Cluster-IP möglich ist.

Re: Three Tier + Web Client

14. November 2013 15:12

In R2 kann man die Web-Client URL frei definieren. Evtl. geht es darüber.

Re: Three Tier + Web Client

14. November 2013 16:23

ich habe nur das normale navision 2013. von R2 habe ich bei uns noch nix gehört bzw wüsste ich auch nicht, dass ich das installationsmedium dazu hätte. und es geht nicht um die url des webclients sondern um den server wo der navision dienst läuft. wenn ich einen der beiden nodes angebe, dann funktionierts. gebe ich die cluster-ip ein, geht es nicht... da kann der webclient keine verbindung aufbauen.

Re: Three Tier + Web Client

18. November 2013 13:11

Hat das Problem niemand?Ist die Konstellation oder die Aufteilung der Services so ungewöhnlich?

Re: Three Tier + Web Client

5. April 2017 15:12

Hallo zusammen,

da wir momentan das gleiche Problem haben wie der Threadersteller (dedizierter Webserver + Webclient lässt sich nicht starten, wenn in der web.config der NAV Cluster angegeben ist), kurze Frage in die Runde, ob jemand ein ähnliches Problem hat oder hatte und evtl. einen Lösungsansatz für uns hat...

Gruß,
Michael

Re: Three Tier + Web Client

5. April 2017 15:33

Hallo,

bitte mal folgendes prüfen:

1. https://msdn.microsoft.com/en-us/library/dd301254(v=nav.80).aspx
2. https://msdn.microsoft.com/nl-be/library/hh166150(v=nav.80).aspx
3. https://msdn.microsoft.com/en-us/library/hh997088(v=nav.80).aspx

wobei Punkt 2 wahrscheinlich das eigentliche Problem ist. Wobei bei den SPNs und damit bei den verwendeten URLs sehr auf exakte Schreibweise (auch Groß/Kleinschreibung) geachtet werden sollte.

Solltet ihr noch NAV2013 einsetzen, musst du wahrscheinlich den SETSPN für den Webclient noch von Hand aufrufen.

Gruß Fiddi

Re: Three Tier + Web Client

5. April 2017 16:06

Hallo Michael,

in unserer Umgebung haben wir Dummy-Computerkonten für die NLB erstellt und für diese explizit nochmals die SPNs für den Dienstbenutzer manuell gesetzt. Voraussetzung dafür ist, dass die Dienste unter dem selben Windows-Konto laufen.

Liegt darin eventuell dein Problem? Wir haben NLB für Web und auch für die NAV-Dienste laufen.