This question is locked. New answers and comments are not allowed.
I have a problem where a new user in a Citrix environment cannot start their application because the monitor has failed. A screen shot of the partial stack trace is attached and I will post the full stack trace when I get it. I am guessing it is a permissions issue. Please advise.
5 Answers, 1 is accepted
0
![](/forums/images/avatarimages/default.gif)
Guest
Top achievements
Rank 1
answered on 06 Feb 2013, 09:48 PM
Here is the full stack trace. The dll EQATEC.Analytics.Monitor.dll is version 2.2.1911.
Exception type: ConfigurationErrorsException
Exception message: Configuration system failed to initialize
Exception stack trace: at System.Configuration.ConfigurationManager.PrepareConfigSystem()
at System.Configuration.ConfigurationManager.GetSection(String sectionName)
at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
at System.Net.Configuration.ConnectionManagementSectionInternal.GetSection()
at System.Net.ServicePointManager.get_ConfigTable()
at System.Net.ServicePointManager.get_InternalConnectionLimit()
at System.Net.ServicePointManager.FindServicePointHelper(Uri address, Boolean isProxyServicePoint)
at System.Net.ServicePointManager.FindServicePoint(Uri address, IWebProxy proxy, ProxyChain& chain, HttpAbortDelegate& abortDelegate, Int32& abortState)
at System.Net.HttpWebRequest.FindServicePoint(Boolean forceFind)
at System.Net.HttpWebRequest.BeginGetRequestStream(AsyncCallback callback, Object state)
at EQATEC.Analytics.Monitor.Messaging.MessageSender.SendMessage(Uri baseUri, Byte[] payload, Action`1 sendMessageCallback)
==================================================Exception type: ConfigurationErrorsException
Exception message: Data at the root level is invalid. Line 1, position 1. (C:\Users\terence.young\AppData\Local\DefaultDomain_Path_qy2o0j2on2q15o2vzekqubjyr0yap0yd\1.0.0.0\user.config line 1)
Exception stack trace: at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
at System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
at System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors()
at System.Configuration.ClientConfigurationSystem.OnConfigRemoved(Object sender, InternalConfigEventArgs e)
==================================================Exception type: XmlException
Exception message: Data at the root level is invalid. Line 1, position 1.
Exception stack trace: at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlTextReader.Read()
at System.Configuration.XmlUtil..ctor(Stream stream, String name, Boolean readToFirstElement, ConfigurationSchemaErrors schemaErrors)
at System.Configuration.BaseConfigurationRecord.InitConfigFromFile()
0
![](/forums/images/avatarimages/default.gif)
Guest
Top achievements
Rank 1
answered on 06 Feb 2013, 09:48 PM
The contents of the user.config file look OK. They are:
0
![](/forums/images/avatarimages/default.gif)
Guest
Top achievements
Rank 1
answered on 06 Feb 2013, 09:48 PM
Hi Derek
Thanks for reporting the issue with such detail. It is not an issue that we are familiar with and I'll be more than happy to assist you as much as possible.
As a guiding principle of our monitor, we want to have "error isolation" which means that errors triggered internally within the monitor should be logged and recovered from, where possible. Some exception types (such as ThreadAbort and others) are uncatchable and will bubble all the way to the top, but a ConfigurationErrorsException should be very catchable as far as I can tell. So I am very interested in getting to the bottom of this issue.
It is true that the root cause of the exception seems to be somewhere inside the configuration system. I seem to remember that the configuration not only validates the specific app.config but also the machine.config and user.config of the machine, so they may be incorrect and actually cause the root issue (the stacktrace also references a user.config file). Perhaps the Citrix environment is somehow to blame or a corrupt sector on the disk? Anyway, the issue is why an exception within the monitor is blowing up your app...
My guess is that the monitor indirectly initiates the first call to the configuration system (by starting a http request) and therefor is the receiver of the configuration error exception. Searching online seems to reveal that corrupt user.config files are a somewhat known issue, and the typical advise is to do some semi-manual removal of the invalid file (see http://www.codeproject.com/Articles/30216/Handling-Corrupt-user-config-Settings).
As mentioned above, from looking at the stacktrace I am a bit puzzled as to why you would see this as a crashing exception and not just as an exception caught in our internal try-catch code. We have a catch clause surrounding the call to request.BeginGetRequestStream (which I have just checked was also present in version 2.2.1911), I'm sure you'll be able to verify this by opening our assembly in Reflector or similar and look in the MessageSender class. I have spent some time trying to understand why this exception could become the exception that crashed your application but I have not been able to find any explanation yet. I'll try to get a colleague involved a bit later to see if a second pair of eyes helps out.
So what do we do about this issue? If you are in contact with the specific user with the problem, perhaps assist them in deleting the user.config file and see if that gets them going again. I'm guessing that this will fix the issue. The article I linked to above could perhaps assist in creating a general start-up check that detects this error and recovers so it (hopefully) won't happen somewhere in the middle of the application.
As to issues/changes within the monitor, I don't think the monitor should perform any special handling of this specific issue (other than catching the exception as I still don't understand why it didn't). The precise recovery for this type of exception is too invasive for the monitor to attempt to solve.
Sorry for the long and somewhat messy reply, I added to it as I progressed in my investigation. I hope you'll be able to move forward with the information here otherwise feel free to send more questions or details and I'll be happy to help out.
Best regards
Soren
EQATEC Team
0
![](/forums/images/avatarimages/default.gif)
Guest
Top achievements
Rank 1
answered on 06 Feb 2013, 09:48 PM
Hi Derek
Have you had any progress in on this issue? I'd be happy to assist in further narrowing down the issue or perhaps looking into specifics that you have discovered.
Best regards
Soren
EQATEC Team
0
![](/forums/images/avatarimages/default.gif)
Guest
Top achievements
Rank 1
answered on 06 Feb 2013, 09:48 PM
Sorry - no progress here because the system administrator for that user is off on paternity leave. I'll let you know when I have more information.