6/21/11

WCF - Could not find a base address that matches scheme

This error indicates that there is no base address handling the request on that particular scheme (http/https) and base address (url).  For example, your WCF web service based address in the web.config may be this:

  • http://mysite.com/myservice.svc    (WCF allows a single based address per scheme http/https)



IIS may be configured to support multiple base addresses like these:

  • http://mysite.com
  • http://www.mysite.com
If you try to load the url http://www.mysite.com/myservice.svc IIS resolves the address, but the WCF setting is in conflict, and an error is shown. Using the web.config, we can add a setting to filter the IIS base address that does not mapped to the WCF based address (add the setting in the system.serviceModel node).

<serviceHostingEnvironment>
       <baseAddressPrefixFilters>
       <add prefix="http://www.mysite.com" />
      </baseAddressPrefixFilters>
</serviceHostingEnvironment>

This should eliminate the conflict, and the request should go to base address defined by the web.config. In addition, a common mistake is that the baseAddressPrefixFilters may be set to the same base address of the WCF service. This filters out the base address and causes the “Could not find base address error”. Following our previous scenario, if you add the setting below, the error will be recreated.

<serviceHostingEnvironment>
 <baseAddressPrefixFilters>
   <add prefix="http://mysite.com" /> (filters The wcf base address – error is shown)
   <add prefix="http://www.mysite.com"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>

I hope this helps.