Kinetic 2023.2 Login Error - hexadecimal value 0x00, is an invalid character

We’ve got several users that are randomly getting this error when logging in to Epicor. Some days it’s fine, and others its not. We clear the temp folders out, and it’s back to good. C:\Epicor is excluded from anti-virus scan. We’re on-prem, 2023.2.9 currently.

Any ideas?

Update - Our Sysadmin found this thread pointing to a corrupt Epicor config file: Log on error - #4 by Bart_Elia (I’m embarrassed to say I didn’t find it first, lol!).

image

Application Error

Exception caught in: System.Xml

Error Detail

============

Message: '.', hexadecimal value 0x00, is an invalid character. Line 1, position 1.

Program: System.Xml.dll

Method: Throw

Client Stack Trace

==================

   at System.Xml.XmlTextReaderImpl.Throw(Exception e)

   at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)

   at System.Xml.XmlTextReaderImpl.ThrowInvalidChar(Char[] data, Int32 length, Int32 invCharPos)

   at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()

   at System.Xml.XmlTextReaderImpl.ParseDocumentContent()

   at System.Xml.XmlTextReaderImpl.Read()

   at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)

   at IceShell.ClientCacheSettingsProvider.LoadConfigFile(String userConfigPath)

   at IceShell.ClientCacheSettingsProvider.LoadValuesFromFile(String userConfigPath)

   at IceShell.ClientCacheSettingsProvider.GetPropertyValues(SettingsContext context, SettingsPropertyCollection collection)

   at System.Configuration.SettingsBase.GetPropertiesFromProvider(SettingsProvider provider)

   at System.Configuration.SettingsBase.SetPropertyValueByName(String propertyName, Object propertyValue)

   at System.Configuration.SettingsBase.set_Item(String propertyName, Object value)

   at System.Configuration.ApplicationSettingsBase.set_Item(String propertyName, Object value)

   at IceShell.SessionManager.loadUserSettings(String userID, Boolean changeUserEvent)

   at IceShell.SessionManager.InitializeInitialSession(Session initialSession)

   at IceShell.SessionManager.<.ctor>b__32_1(Object _, SessionChangedEventArgs e)

   at Ice.Lib.UI.SessionCache.OnInitialSessionChangedEvent(SessionChangedEventArgs e)

   at Ice.Lib.UI.SessionCache.SetInitialSession(Session session)

   at Ice.Lib.UI.SessionCache.set_CurrentSession(Session value)

   at IceShell.SplashScreenApp.logon_LogonEnded(Object sender, EventArgs e)

   at IceShell.Apps.LogonDialog.OnLogonEnded(Object sender, EventArgs e)

   at IceShell.Apps.LogonDialog.StopLogon()

   at IceShell.Apps.LogonDialog.DoWorkLogon()

   at IceShell.Apps.LogonDialog.btnOK_ButtonClick(Object sender, InputEventArgs e)

   at IceShell.ImageButton.Click(InputEventArgs e)

   at IceShell.ImageButton.OnAccessKeyPressed(Object sender, AccessKeyPressedEventArgs e)

   at System.Windows.Input.AccessKeyPressedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)

   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)

   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)

   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)

   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)

   at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)

   at System.Windows.Input.AccessKeyManager.GetInfoForElement(IInputElement element, String key)

   at System.Windows.Input.AccessKeyManager.GetTargetsForScope(Object scope, String key, IInputElement sender, AccessKeyInformation senderInfo)

   at System.Windows.Input.AccessKeyManager.GetTargetsForSender(IInputElement sender, String key)

   at System.Windows.Input.AccessKeyManager.ProcessKeyForSender(Object sender, String key, Boolean existsElsewhere, Boolean userInitiated)

   at System.Windows.Input.AccessKeyManager.OnKeyDown(KeyEventArgs e)

   at System.Windows.Input.AccessKeyManager.PostProcessInput(Object sender, ProcessInputEventArgs e)

   at System.Windows.Input.InputManager.RaiseProcessInputEventHandlers(ProcessInputEventHandler postProcessInput, ProcessInputEventArgs processInputEventArgs)

   at System.Windows.Input.InputManager.ProcessStagingArea()

   at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)

   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)

   at System.Windows.Interop.HwndKeyboardInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawKeyboardActions actions, Int32 scanCode, Boolean isExtendedKey, Boolean isSystemKey, Int32 virtualKey)

   at System.Windows.Interop.HwndKeyboardInputProvider.ProcessKeyAction(MSG& msg, Boolean& handled)

   at System.Windows.Interop.HwndSource.CriticalTranslateAccelerator(MSG& msg, ModifierKeys modifiers)

   at System.Windows.Interop.HwndSource.TranslateAcceleratorCore(MSG& msg, ModifierKeys modifiers)

   at System.Windows.Interop.HwndSource.System.Windows.Interop.IKeyboardInputSink.TranslateAccelerator(MSG& msg, ModifierKeys modifiers)

   at System.Windows.Forms.Integration.ElementHost.ProcessCmdKey(Message& msg, Keys keyData)

   at IceShell.Apps.Controls.WinformsControlHost.ProcessCmdKey(Message& msg, Keys keyData)

   at System.Windows.Forms.Control.PreProcessMessage(Message& msg)

   at System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)

   at System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)

Redeploy the config file?

We’ll try that, thanks!

I’ve asked our sysadmin to save the original (possibly corrupt) config file so we can compare it, if it happens again. I thought we re-installed Epicor a while, back, but it’s not in the notes.

Sad Season 1 GIF by The Roku Channel

This may also work for you: