Hi,
About NAV2017 Web client functionality:
- I've installed NAV Server instance on server A where is also SQL Server.
- Web server components are installed on web server B.
- I have followed installation instructions from
https://msdn.microsoft.com/en-us/library/jj551783(v=nav.90).aspx
- For instance, delegation is setup.
NAV 2017 web client is working from web server B but if I'll try to use web client from server A, I'll get message to browser: "A server error has occured and the content cannot be displayed. Refresh the page or open a new browser window."
Any idea, what might be a case in here?
Thanks in advance!
Here's an event log from web server B:
Error accessing Website Microsoft Dynamics NAV 2017 Web Client
Raw Url: /NAV_TEST/WebClient/list.aspx?spa=1&dc=0&inapp=false
Url:
http://10.10.100.1:8080/NAV_TEST/WebClient/list.aspx?spa=1&dc=0&inapp=false
Type: Microsoft.Dynamics.Nav.Types.NavServerNotFoundException
Message: A server was not found at "net.tcp://testsql:7046/NAV_TEST/Service". Either the URL is incorrect or the server is currently not available.
StackTrace:
at Microsoft.Dynamics.Nav.Client.ConnectionEstablisher.ConfirmOpenConnectionRetry(ConnectFailedEventArgs connectFailedArgs, Exception exception)
at Microsoft.Dynamics.Nav.Client.ConnectionEstablisher.OpenConnection[TChannel](ConnectFailedEventArgs connectFailedArgs, ConnectionRequest connectionRequest, ConnectionOptions connectionOptions, SpnSetting spnSettingToTry, Boolean allowSpnSettingsSwap, UserSettings& userSettings)
at Microsoft.Dynamics.Nav.Client.ConnectionEstablisher.OpenConnection[TChannel](ConnectionRequest connectionRequest, ConnectionOptions connectionOptions, 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.ShownFormTrackingUISessionInitializer.Initialize(UISession session)
at Microsoft.Dynamics.Framework.UI.Web.LogicalFormInitializer.InitializeSession(FormPropertyBag formBeingInitialized, ClientSession clientSession)
at Microsoft.Dynamics.Framework.UI.Web.LogicalFormInitializer.<>c__DisplayClass9_0.<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.9350000'.
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.DelegatingConnection.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.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
Answers
If you had to disable "Use Kerberos Only" to make it work it means that you have not setup accounts delegation and impersonation correctly.
Slawek
Dynamics NAV, MS SQL Server, Wherescape RED;
PRINCE2 Practitioner - License GR657010572SG
GDPR Certified Data Protection Officer - PECB License DPCDPO1025070-2018-03
Thanks for your message.
I followed delegation instructions from https://msdn.microsoft.com/en-us/library/jj551742(v=nav.90).aspx#Delegate and when I had "Use Kerberos Only" option enabled, I could only then access database with web client with url having server name defined in url (not with IP).
Pls comment if you have some hints what could be worth to check in setup.
Thanks!