Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix "could not find a base address that matches schema http"... in WCF

I'm trying to deploy a WCF service to my server, hosted in IIS. Naturally it works on my machine :)

But when I deploy it, I get the following error:

This collection already contains an address with scheme http. There can be at most one address per scheme in this collection.

Googling on this, I find that I have to put a serviceHostingEnvironment element into the web.config file:

<serviceHostingEnvironment>   <baseAddressPrefixFilters>     <add prefix="http://mywebsiteurl"/>   </baseAddressPrefixFilters> </serviceHostingEnvironment> 

But once I have done this, I get the following:

Could not find a base address that matches scheme http for the endpoint with binding BasicHttpBinding. Registered base address schemes are [https].

It seems it doesn't know what the base address is, but how do I specify it? Here's the relevant section of my web.config file:

<system.serviceModel>   <serviceHostingEnvironment>     <baseAddressPrefixFilters>       <add prefix="http://mywebsiteurl"/>     </baseAddressPrefixFilters>   </serviceHostingEnvironment>    <behaviors>     <serviceBehaviors>       <behavior name="WcfPortalBehavior">         <serviceMetadata httpGetEnabled="true"/>         <serviceDebug includeExceptionDetailInFaults="true"/>       </behavior>     </serviceBehaviors>   </behaviors>   <bindings>     <basicHttpBinding>       <binding name="BasicHttpBinding_IWcfPortal"                maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"                receiveTimeout="00:10:00" sendTimeout="00:10:00"                openTimeout="00:10:00" closeTimeout="00:10:00">         <readerQuotas maxBytesPerRead="2147483647" maxArrayLength="2147483647"                maxStringContentLength="2147483647"/>       </binding>     </basicHttpBinding>   </bindings>    <services>     <service behaviorConfiguration="WcfPortalBehavior" name="Csla.Server.Hosts.Silverlight.WcfPortal">       <endpoint address="" binding="basicHttpBinding" contract="Csla.Server.Hosts.Silverlight.IWcfPortal"       bindingConfiguration="BasicHttpBinding_IWcfPortal">       </endpoint>       <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>     </service>   </services> </system.serviceModel> 

Can anybody shed some light on what's going on and how to fix it?

like image 223
Craig Shearer Avatar asked May 16 '09 10:05

Craig Shearer


People also ask

Could not find a base address that matches scheme https for?

You need to create the SSL certificate in IIS server. 2. In IIS, you need add https binding (SSL) and select the certificate that you created in 1 step..

What is WSHttpBinding?

WSHttpBinding(SecurityMode, Boolean) Initializes a new instance of the WSHttpBinding class with a specified type of security used by the binding and a value that indicates whether a reliable session is enabled.


2 Answers

Try changing the security mode from "Transport" to "None".

      <!-- Transport security mode requires IIS to have a            certificate configured for SSL. See readme for            more information on how to set this up. -->       <security mode="None"> 
like image 114
dale Avatar answered Sep 20 '22 08:09

dale


I had to do two things to the IIS configuration of the site/application. My issue had to do with getting net.tcp working in an IIS Web Site App:

First:

  1. Right click on the IIS App name.
  2. Manage Web Site
  3. Advanced Settings
  4. Set Enabled protocols to be "http,net.tcp"

Second:

  1. Under the Actions menu on the right side of the Manager, click Bindings...
  2. Click Add
  3. Change type to "net.tcp"
  4. Set binding information to {open port number}:*
  5. OK
like image 34
ZaChickster Avatar answered Sep 22 '22 08:09

ZaChickster