The Daily Parker

Politics, Weather, Photography, and the Dog

Stupid error messages that cost lots of time

Parker and I haven't yet left for Ribfest because I've just spent two and a half hours debugging an application.

After upgrading the application to the current version of the Inner Drive Extensible Architecture™ the thing wouldn't start. I simply got an error message in plain text, "The page cannot be displayed because an internal server error has occurred." The Windows Application Log supplied this clue:

The worker process for application pool 'a177c227-f36e-4874-aefe-9b41ca0d14ec' encountered an error 'Cannot read configuration file ' trying to read global module configuration data from file '\\?\C:\Users\dab\AppData\Local\dftmp\Resources\02e946dc-c92e-4774-a19a-5b013a38da65\temp\temp\RoleTemp\applicationHost.config', line number '0'. Worker process startup aborted.

Searching through Stack Overflow gave me a few clues, but nothing concrete. So I had to go through the web.config file line by line until I found this:

			<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener,
		Microsoft.WindowsAzure.Diagnostics, Version=, Culture=neutral, 
		PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
				<filter type="" />

Deleting the configuration section altogether worked. So did changing the 1.8 to a 2.2. And now the application runs. And now Parker and I are going to get ribs.

The error message is just stupid programmers being lazy. It isn't really that hard to write error messages that tell users what has gone wrong. In this case, line number 0 wasn't the problem; it was farther down in the configuration file, and in fact it had very little to do with the configuration file at all.

I would like to have seen a message in the application log that "the system could not load Microsoft.WindowsAzure.Diagnostics version 1.8." Why was that too hard for the Azure Emulator team?

Comments are closed