WCF Config in Asp.net web site

Hi

I am trying to get a WCF service running in an ASP.Net project (will run in IIS 7 but I can't get it work in visual studio for the moment). The reason why I need WCF is because I want to use MTOM encoding which is not available in a classic asp.net webservice. For the same reason I want to configure it so that I can upload large binary messages.

That means that I do need to specify the configuration of the service in web.config.

the service is located in a file called "albumservice.svc" in the root of the website, and the corresponding interface (Ialbumservice) is correctly implemented (albumservice class).

You can find below the web.config file I currently have. With this I am getting the following error when trying to view the service in a browser (the rest of the site works corretly):

Could not find a base address that matches scheme https for the endpoint with binding albumWSbinding. Registered base address schemes are [http].
[InvalidOperationException: Could not find a base address that matches scheme https for the endpoint with binding albumWSbinding. Registered base address schemes are [http].]
   System.ServiceModel.ServiceHostBase.MakeAbsoluteUri(Uri relativeOrAbsoluteUri, Binding binding, UriSchemeKeyedCollection baseAddresses) +12230836
   System.ServiceModel.Description.ConfigLoader.LoadServiceDescription(ServiceHostBase host, ServiceDescription description, ServiceElement serviceElement, Action`1 addBaseAddress) +12228189
   System.ServiceModel.ServiceHostBase.LoadConfigurationSectionInternal(ConfigLoader configLoader, ServiceDescription description, ServiceElement serviceSection) +67

I keep looking around but it doesn't look like I am doing anything wrong. Removing the address tag of the endpoint doesn't help. If anyone has any suggestions, they are more than welcome!

thanks
Charles




<system.serviceModel>
    <services>
      <service name="albumservice" behaviorConfiguration="albumbehavior">
        <endpoint address="albumservice.svc"
                  binding="wsHttpBinding"
                  bindingConfiguration="albumWSbinding"
                  bindingName="albumWSbinding"
                  contract="Ialbumservice"
                  name="albumWSpoint"></endpoint>
        <endpoint binding="mexHttpBinding"
                  address="mex"
                  contract="IMetadataExchange"
                  name="albumMEXpoint"></endpoint>
      </service>
    </services>
    <bindings>
      <wsHttpBinding>
        <binding name="albumWSbinding" maxBufferPoolSize="5000000"
                 maxReceivedMessageSize="5000000"
                 messageEncoding="Mtom"
                 receiveTimeout="00:10:00">
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </wsHttpBinding>
      <mexHttpBinding>
        <binding name="albumMEXbinding" >
        </binding>
      </mexHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="albumbehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

Open in new window

cm2187Asked:
Who is Participating?
 
Alfred A.Connect With a Mentor Commented:
OK.  This might be an IIS configuration issue.  Check the link below:

http://weblogs.asp.net/andrewrea/archive/2010/08/10/wcf-could-not-find-a-base-address-that-matches-scheme-https.aspx

I hope this helps.
0
 
Alfred A.Commented:
Check this out.  This might help:

http://www.codewrecks.com/blog/index.php/2009/11/25/wcf-over-secure-transport/

http://www.codeproject.com/KB/WCF/WCF.aspx

You might need to use mexHttpsBinding rather than mexHttpBinding

and you might need to do this <serviceMetadata httpsGetEnabled="true"/> rather than <serviceMetadata httpGetEnabled="true"/>

0
 
cm2187Author Commented:
But that's what I don't understand. I am not using https. I am trying to consume this service over regular http.
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
Alfred A.Commented:
What is your base address anyway?  Did you set this up programmatically or within config?  Your base Address might be based on https.

something like this under services --> service tag.

   <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8081/test/" />
          </baseAddresses>
        </host>
0
 
cm2187Author Commented:
my understanding was that if the service is hosted in IIS I should not need to specify the base address. Which would force me to hardcode in config some development specific variable.
0
 
cm2187Author Commented:
actually asp won't even let me do it:

Error message
When 'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled' is set to true in configuration, the endpoints are required to specify a relative address. If you are specifying a relative listen URI on the endpoint, then the address can be absolute.
0
 
Alfred A.Commented:
Oh yeah.  You generated a web site project (IIS Hosting) for the WCF service library.  Sorry, I was thinking of something else.

OK.  Your IIS website is based on http, right?  What is the address?  Is it something like "http://localhost/sample/albumservice.svc"?
0
 
cm2187Author Commented:
And changing mexHttpBinding to mexHttpsBinding doesn't affect the error
0
 
cm2187Author Commented:
Absolutely (while in development)
0
 
cm2187Author Commented:
and what is weird is that I I add a new WCF service to the project (but don't alter anything to the web.config) this new service works. Obviously this is not good enough for me as I need that service to use a different encoding and max request size than the values by default. But it doesn't seem to be anything else than something wrong in my web.config
0
 
Alfred A.Commented:
Just checking.  In my case, it is always http.  It should be http in development anyway.  :-)

That is just weird.  Anyway, I'll come back to this later.  I'm going to a meeting now. :-)
0
 
cm2187Author Commented:
thanks!
0
 
cm2187Author Commented:
You did it!
removing the security part from the binding solved the problem! Would have never found that myself!

Thanks for your help!
Charles
0
All Courses

From novice to tech pro — start learning today.