22

I am getting this error when I try to navigate to my .svc file. It appears that it's not finding my basicHttpsBinding; here's that section of my web.config:

<system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<protocolMapping>
  <add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true"/> 

I tried searching through Google but any answers I could find didn't seem to apply to what I'm doing here. Most of what I found talked about custom bindings, of which I don't think I have any. I'm honestly not even close to sure what could be causing this error, so any help would be greatly appreciated. If you need more information let me know and I'll add it.

Darian Everett
  • 909
  • 3
  • 9
  • 22

5 Answers5

21

BasicHttpsBinding is a new binding in .NET 4.5, therefore you cannot use it in a 4.0 application. Either you remove the protocolMapping or you use another binding such as basicHttpBinding or wsHttpBinding.

When you configure SSL in IIS, this should work as well.

slfan
  • 8,950
  • 115
  • 65
  • 78
  • so are you saying you only need bsicHttpBinding and ssl will still work? – PositiveGuy Jan 27 '14 at 04:59
  • 1
    @CoffeeAddict the two bindings are very similar. See this thread http://stackoverflow.com/questions/14874529/what-is-the-difference-between-basichttpsbinding-and-wshttpbinding-with-transpor to understand the difference – slfan Feb 03 '14 at 16:52
18

If you have a similar scenario as mine where the Visual Studio-generated Web.config has the following configs:

  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <pages controlRenderingCompatibilityVersion="4.0" />
  </system.web>

... add <httpRuntime targetFramework="4.5" />

So that you now have

  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <pages controlRenderingCompatibilityVersion="4.0" />
    <httpRuntime targetFramework="4.5" /> 
  </system.web>

I also went on to remove <pages controlRenderingCompatibilityVersion="4.0" /> with no impact in my situation.

tinonetic
  • 7,751
  • 11
  • 54
  • 79
  • 1
    This answer is good for a .Net 4.5 app. It's not obvious why it should be necessary to do this, given that we've already said targetFramework="4.5", but it really does seem to be the case that parts of configuration will still default to 4.0 unles we set the target version here as well as in ``. – Reg Edit Jan 31 '17 at 13:33
3

Remove protocolMapping section from web.config and it will work.

user2771704
  • 5,994
  • 6
  • 37
  • 38
0

if you use framework 4.5 or up you can add below code to your web.config

The following attributes can be set on the tag.

  <system.Web>
    <httpRuntime targetFramework="4.8" />
  </system.Web>
-1

On VS2022, I explicitly specified the targetFramework attribute, as below:

From this

<httpRuntime/>

To this

<httpRuntime targetFramework="4.8"/>

...and it works well!

swatsonpicken
  • 873
  • 1
  • 7
  • 21