Discovery is a factor underlying web services and especially SOA. The ability of anyone who can get to the service to pull out WSDL, create a proxy in Visual Studio (or some other tool), and start using this service is one of the main reasons for creating a web service!
I assume that you could generate all the client proxies and then disable the mex endpoint, but that pretty much cripples WCF, and even then it's just security through obscurity.
If you do not want any attacker to click on your web service, either do not use basicHttpBinding (which is for the explicit purpose of immediate and anonymous consumption), or host the service on a private network that only trusted clients can trust.
source share