I found that it is almost always a problem with the way the endpoint, bindings, and/or the behavior is configured. For the most part, if your web site in IIS does not have an HTTP binding, then make sure to explicitly set the httpGet httpGetEnabled='false' in the configuration/system.serviceModel/behaviors/serviceBehaviors/behavior/serviceMetadata configuration respective to your WCF service. The path above ofcourse is refering to your web or app.config file. In addition, if you have an endpoint that has 'http://' in the address, remove it. WCF pays attention to these things and will throw the same ambiguous error message. There is a whole maze of mis-configurations that produce the same error messages. I hate that about WCF. I which it was more specific like: "Hey dumm as#! You have an HTTP in one of your endpoint addresses but IIS has no HTTP binding!" ;P Atleast this way I won't be chasing my tail.
Likewise, I never use the mex endpoints as they are more trouble then they are worth. Instead, use the httpsHelpPageUrl and httpsHelpPageEnabled attributes in the configuration/system.serviceModel/behaviors/serviceBehaviors/behavior/serviceDebug config element (assuming your using HTTPS).