mex binding error in WCF

.net, c#, visual-studio-2008, wcf, wshttpbinding

Solution

The base address for your service defines "HTTPS://" - but your mex address is "HTTP".

If you want your service to use https://, you'll need to use the mexHttpsBinding as well:

<services>
    <service name="MyWCFService" behaviorConfiguration="mexServiceBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="https://localhost:9090/MyService"/>
          </baseAddresses>
        </host>
        <endpoint address="" 
                binding="wsHttpBinding" 
                bindingConfiguration="MyBinding" 
                contract="IMyService" 
        />
        <endpoint address="mex" 
                binding="mexHttpsBinding" 
                contract="IMetadataExchange" 
        />
    </service>
</services>

Marc

Problem

I am using VSTS 2008 + C# + .NET 3.0. I am using a self-hosted WCF service. When executing the following statement, there is the following "binding not found" error. I have posted my whole app.config file, any ideas what is wrong? ``` ServiceHost host = new ServiceHost(typeof(MyWCFService)); ``` Error message: Could not find a base address that matches scheme http for the endpoint with binding MetadataExchangeHttpBinding. Registered base address schemes are [https]. Full app.config: ``` <?xml version="1.0"?> <configuration> <system.serviceModel> <bindings> <wsHttpBinding> <binding name="MyBinding" closeTimeout="00:00:10" openTimeout="00:00:20" receiveTimeout="00:00:30" sendTimeout="00:00:40" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="WeakWildcard" maxReceivedMessageSize="100000000" messageEncoding="Mtom" proxyAddress="http://foo/bar" textEncoding="utf-16" useDefaultWebProxy="false"> <reliableSession ordered="false" inactivityTimeout="00:02:00" enabled="true" /> <security mode="Transport"> <transport clientCredentialType="Digest" proxyCredentialType="None" realm="someRealm" /> </security> </binding> </wsHttpBinding> </bindings> <services> <service name="MyWCFService" behaviorConfiguration="mexServiceBehavior"> <host> <baseAddresses> <add baseAddress="https://localhost:9090/MyService"/> </baseAddresses> </host> <endpoint address="" binding="wsHttpBinding" bindingConfiguration="MyBinding" contract="IMyService"/> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> <behaviors> <serviceBehaviors> <behavior name="mexServiceBehavior"> <serviceMetadata httpGetEnabled="True"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> <startup><supportedRuntime version="v2.0.50727"/></startup></configuration> ```

Original source