Imagine you developed an ASP.NET WebService, but the client that needs to use it wants to call it using HTTP POST instead of SOAP.

As default, when accessed from the localhost, all webservices listen both to SOAP and HTTP POST calls, but if accessed from another host they listen only to SOAP.

My friend Google found a page on the MSDN site that explains how to change the protocols accepted by the ASP.NET runtime to listen to web services calls.

As all configuration settings it can be changed both at machine level (machine.config) and per single application inside the web.config.

The configuration section is named <webServices> and is inside the <system.web> section.

The default configuration (the one that is inside a newly installed machine.config) is the following:

<system.web>
    ...
    <webServices>
        <protocols>
              <add name="HttpSoap"/> 
              <!-- <add name="HttpPost"/> --> 
              <!-- <add name="HttpGet"/>  -->
              <add name="Documentation"/>
              <add name="HttpPostLocalhost"/>
        </protocols>
    </webServices>
    ...
</system.web

Option names are quite self explaining. So, in order to enable allow HTTP POST calls, all you need is to uncomment the HttpPost in the machine.config or add <add name="HttpPost"/> in your application web.config