Custom wsdlHelpGenerator + webroot = error

Why are the smallest bugs in the .NET framework always the most disproportionately frustrating? Take the wsdlHelpGenerator element, for example. Sure, it seems straightforward enough; you want to replace the default crappy, random hash sorted list of Web Service methods with one that’s (shock!) in alphabetical order. I know, it’s crazy talk, but bear with me. So you’d...

  1. Make a copy of the file: C:WINDOWSMicrosoft.NETFrameworkv1.1.4322CONFIGDefaultWsdlHelpGenerator.aspx 
  2. Rename that file to CustomWsdlHelpGenerator.aspx and place it in the root of your Web Service solution
  3. Open the file and make a simple one-line modification, replacing Hashtable methodsTable with SortedList methodsTable
  4. Modify your Web.config to include the following:
<webServices>  
<wsdlHelpGenerator href="CustomWsdlHelpGenerator.aspx" />  
</webServices>

And it works great! Well, as long as you deploy your Web Service to a subfolder under the webroot (e.g., http://staging.company.com/mywebservice/). However. If you deploy this very same code to a root URL (e.g., http://mywebservice.company.com/, you get this exciting, ultra-fatal error:

Configuration Error

Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: Exception in configuration section handler.

This makes deploying to production a lot more, uh, thrilling than it would otherwise be. Commenting the wsdlHelpGenerator line out “fixes” the problem. So does moving the webservice to a subfolder under the root.

This egregious bug in the .NET framework really pisses me off, particularly since it has persisted into 1.1 SP1. I can find lots of people complaining about this in Google Groups, but I can’t find one single workaround. Can you? Class? Bueller? Bueller?

Related posts

Monkeypatching For Humans

Although I love strings, sometimes the String class can break your heart. For example, in C#, there is no String.Left() function. Fair enough; we can roll up our sleeves and write our own function lickety-split: public static string Left(string s, int len) { if (len == 0 || s.Length == 0)

By Jeff Atwood ·
Comments

Department of Declaration Redundancy Department

I sometimes (often, actually) regress a few years mentally and forget to take advantage of new features afforded by the tools I'm using. In this case, we're using the latest and greatest version of C#, which offers implicitly typed local variables. While working on Stack Overflow,

By Jeff Atwood ·
Comments

Productivity Tip: Upgrade Your Pentium 4

In C# and the Compilation Tax, several commenters noted that they have "fast dual-core computers", and yet background compilation performance was unsatisfactory for them on large projects. It's entirely possible that this is Visual Studio's fault. However, I'd like to point out

By Jeff Atwood ·
Comments

C# and the Compilation Tax

Over the last four years, I've basically given up on the idea that .NET is a multiple language runtime. * The so-called choice between the two most popular languages, C# and VB.NET, is no more meaningful than the choice between Coke and Pepsi. Yes, IronPython and IronRuby are

By Jeff Atwood ·
Comments

Recent Posts

Let's Talk About The American Dream

Let's Talk About The American Dream

A few months ago I wrote about what it means to stay gold — to hold on to the best parts of ourselves, our communities, and the American Dream itself. But staying gold isn’t passive. It takes work. It takes action. It takes hard conversations that ask us to confront

By Jeff Atwood ·
Comments
Stay Gold, America

Stay Gold, America

We are at an unprecedented point in American history, and I'm concerned we may lose sight of the American Dream.

By Jeff Atwood ·
Comments
The Great Filter Comes For Us All

The Great Filter Comes For Us All

With a 13 billion year head start on evolution, why haven’t any other forms of life in the universe contacted us by now? (Arrival is a fantastic movie. Watch it, but don’t stop there – read the Story of Your Life novella it was based on for so much

By Jeff Atwood ·
Comments
I Fight For The Users

I Fight For The Users

If you haven’t been able to keep up with my blistering pace of one blog post per year, I don’t blame you. There’s a lot going on right now. It’s a busy time. But let’s pause and take a moment to celebrate that Elon Musk

By Jeff Atwood ·
Comments