A: 

This is a bit of a random thought, but maybe not: reverse the order of the elements in your config so extensions come before behaviors.

-Oisin

x0n
Sounds like a reasonable guess, but no, the error is the same.
Andrew Shepherd
A: 

It turns out that I didn't get the assembly qualified name EXACTLY right. The assembly qualified name was correct enough for the .NET framework to load, but then the WCF framework performs a naive character-by-character comparison when matching the behavior configurations.

To finally get the exact type name, I wrote code to create an instance of ClientLoggingEndpointBehaviourExtension object, and wrote the AssemblyQualifiedName property to a local variable, which I then copy-and-pasted from the debug window into the .config file.

That I had to do all this is considered to be a bug in the WCF framework. (See this link) Apparently it's fixed in .NET 4.0.

Also see this article.

Andrew Shepherd